.d.ts javascript库的typescript文件

时间:2018-04-04 11:47:34

标签: javascript typescript migration ionic3

我正在尝试创建一个描述文件以使用带有打字稿的javascript库。

目前我正在尝试遵循这些指南:TypeScript Official websiteMedium guide to migrate to typescript

具体而言,我正在尝试为leaflet-icon-pulse创建一个打字稿描述文件,我认为这个文件很简单,可以从

开始

所以我下载了git项目,创建了 tsconfig.json ,如下所示

{
"compilerOptions": {
  "outDir": "./built",
  "allowJs": true,
  "noImplicitAny": true,
  "strictNullChecks": true,
  "target": "es5",
  "module": "commonjs"
},
"include": [
  "./src/**/*"
],
"exclude": [
  "node_modules"
]
}

然后我尝试将文件 L.Icon.Pulse.js 转换为 L.Icon.Pulse.ts ,但我开始收到如下错误:

Property X does not exists on type Y

据我所知,我需要让js成为一个L.Icon.Pulse.d.ts文件

现在我的看起来像:

import * as L from 'leaflet';
declare module 'leaflet' {
     function Pulse(options?: any): any;
}

但现在我不知道如何先行,而且我无法找到一个好的教程或示例如何继续。

有人可以给我一些关于如何处理的提示吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我可能会忽略打字稿错误而不是创建d.ts文件。

所以,你通过npm:

安装leaflet-pulse-icon
StrLen $1 "$2"
IntOp $1 $1 + 1 ; Add \0 terminator
!if "${NSIS_CHAR_SIZE}" > 1
    IntOp $1 $1 * ${NSIS_CHAR_SIZE}
!endif
DetailPrint "$2 is $1 bytes"

...并将其包含在您的组件中:

npm install leaflet-pulse-icon

为了避免错误,只需让TypeScript忽略一段时间的打字。所以,而不是:

import 'leaflet-pulse-icon';

您应该使用:

let pulsingIcon = L.icon.pulse({iconSize:[20,20],color:'red'});

...使用L作为"任何类型"变量

当然,TypeScript不应该没有类型(!),但有时,我发现使用":any"来绕过一些错误很方便。方式。