我使用了很多自己的和第三方的库。我看到“typings”目录包含一些Jquery和WinRT…但它们是如何产生的呢?
当前回答
你可以使用tsc——declaration fileName。就像Ryan描述的那样,或者你可以在tsconfig的compileroption下指定declaration: true。Json,假设你已经有了一个tsconfig。Json在你的项目。
其他回答
正如Ryan所说,tsc编译器有一个switch——声明,它生成一个.d。Ts文件中的。Ts文件。还要注意(排除bug) TypeScript应该能够编译Javascript,所以你可以将现有的Javascript代码传递给tsc编译器。
在创建自己的库时,您可以创建*.d。ts文件使用tsc (TypeScript编译器)命令,如下所示: (假设您正在将库构建到dist/lib文件夹)
tsc -d --declarationDir dist/lib --declarationMap --emitDeclarationOnly
-d(——declaration):生成*.d。ts文件 ——declarationDir dist/lib:生成声明文件的输出目录。 ——declarationMap:为每个对应的' .d生成一个源地图。ts文件。 ——emitDeclarationOnly:只释放' .d。Ts的声明文件。(没有编译过的JS)
(查看文档了解所有命令行编译器选项)
或者在你的package.json中:
"scripts": {
"build:types": "tsc -d --declarationDir dist/lib --declarationMap --emitDeclarationOnly",
}
然后run: yarn build:types(或NPM run build:types)
处理这种情况(如果DefinitelyTyped上没有声明文件)的最佳方法是仅为所使用的内容而不是整个库编写声明。这大大减少了工作——此外,编译器可以通过抱怨丢失的方法来帮助解决问题。
正如http://channel9.msdn.com/posts/Anders-Hejlsberg-Steve-Lucco-and-Luke-Hoban-Inside-TypeScript 00:33:52所描述的,他们已经建立了一个工具,将WebIDL和WinRT元数据转换为TypeScript d.ts
你可以使用tsc——declaration fileName。就像Ryan描述的那样,或者你可以在tsconfig的compileroption下指定declaration: true。Json,假设你已经有了一个tsconfig。Json在你的项目。
推荐文章
- 从元组/数组值派生联合类型
- 如何在Angular2 ngSwitch语句中使用typescript enum值
- 找到合成属性@panelState。请在您的应用程序中包含“BrowserAnimationsModule”或“NoopAnimationsModule”。
- Angular 2+和debounce
- 在TypeScript箭头函数中指定返回类型
- 如何使用jQuery与TypeScript
- Angular 2模板中的标签是什么意思?
- Typescript接口-可能使“一个或另一个”属性要求?
- 如何扩展/继承组件?
- 错误:'types'只能在.ts文件中使用- Visual Studio Code使用@ts-check
- Typescript ReferenceError: exports没有定义
- React组件中使用TypeScript的默认属性值
- Angular 5 -复制到剪贴板
- TypeScript枚举对象数组
- Angular 2显示和隐藏一个元素