TypeScript 功能
🌐 TypeScript features
由于 Node.js 仅移除内联类型,任何涉及用新的 JavaScript 语法替换 TypeScript 语法的 TypeScript 特性都会出错,除非传递了标志 --experimental-transform-types。
🌐 Since Node.js is only removing inline types, any TypeScript features that
involve replacing TypeScript syntax with new JavaScript syntax will error,
unless the flag --experimental-transform-types is passed.
需要转换的最突出的功能是:
🌐 The most prominent features that require transformation are:
Enum声明namespace与运行时代码- 带有运行时代码的传统
module - 参数属性
- 导入别名
不包含运行时代码的 namespaces 和 module 是被支持的。这个示例将会正确运行:
// This namespace is exporting a type
namespace TypeOnly {
export type A = string;
} 这将导致 ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX 错误:
🌐 This will result in ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX error:
// This namespace is exporting a value
namespace A {
export let x = 1
} 由于装饰器目前是一个 TC39 第3阶段提案,并且很快将得到 JavaScript 引擎的支持,所以它们不会被转换,并且会导致解析器错误。这是一个临时限制,未来将会得到解决。
🌐 Since Decorators are currently a TC39 Stage 3 proposal and will soon be supported by the JavaScript engine, they are not transformed and will result in a parser error. This is a temporary limitation and will be resolved in the future.
此外,Node.js 不会读取 tsconfig.json 文件,也不支持依赖 tsconfig.json 设置的功能,例如路径或将较新的 JavaScript 语法转换为较旧的标准。
🌐 In addition, Node.js does not read tsconfig.json files and does not support
features that depend on settings within tsconfig.json, such as paths or
converting newer JavaScript syntax into older standards.