Ale*_*ler 15 javascript node.js jsdoc typescript
虽然在ES6中有部分Node.js,但是可以在同一个项目中混合一些Typescript模块吗?
例如,在TypeScript中定义了一些通过require普通ES6文件导入的类型?
Alu*_*dad 23
是的,这是可能的.
合并以下编译器标志
--allowJs
显式支持混合JavaScript和TypeScript源
--outDir
由于所有文件都将被转换,因此必须将生成的JavaScript输出到不同的目录中,否则输入
.js文件将被覆盖1.
--checkJs
这是完全可选的.如果指定,编译器将检查JavaScript文件,报告错误,就像在TypeScript文件中一样,否则会容忍不一致.
至于在JavaScript文件中使用TypeScript文件中声明的类型,确实可以这样做.
TypeScript实际上为Visual Studio Code等工具中的所有JavaScript智能感知提供支持.
类型可以放在JSDoc 2注释中.这些注释可以引用从TypeScript(.ts/ .tsx/ .d.ts)文件导入的类型.像Visual Studio Code这样的IDE将在这些注释中提供语法高亮和自动完成功能.
但是有一个警告.由于JavaScript中的类型没有明确的语法,因此无法单独导入它们,但必须将其附加到导入的值.这通过TypeScript的声明合并最方便地实现,如下所示.
例:
a.ts
export default createThing;
function createThing(...args): createThing.Thing {...}
namespace createThing {
export interface Thing {...}
}
Run Code Online (Sandbox Code Playgroud)
b.js
import createThing from './a';
/**
* @param {createThing.Thing} thing
*/
export function takesThing(thing) {}
Run Code Online (Sandbox Code Playgroud)
笔记:
1:--outDir如果另外指定--noEmit标志,则不需要.如果您使用SystemJS(plugin-typescript)或Webpack(awesome-typescript-loader或ts-loader)等工具来托管转换器,请执行此操作.如果您使用ts节点,则同样适用.
2:虽然叫JSDoc评论,他们解释了打字稿类型系统的背景下,没有了JSDoc类型系统.像TypeScript和Google的Closure Compiler这样的语言和工具有效地劫持了JSDoc语法用于它们自己的目的,从而赋予它的构造潜在的冲突含义.这通常不是问题,但值得了解,因为很难确定这些注释的适用性和正确性以及它们引用或声明的类型的兼容性.
备注:
虽然这个问题和答案都是关于导入用于JavaScript文件的类型,但由于编译器会根据表达式的值推断出类型,因此通常没有必要.
值得一提的是,如果您发现自己需要编写大量JSDoc样式类型的注释,那么将文件转换为TypeScript几乎肯定会更好,因为在JSDoc中表达类型的语法很笨拙.由于该--allowJs选项,您可以逐个文件地执行此操作,如上所述.
| 归档时间: |
|
| 查看次数: |
10421 次 |
| 最近记录: |