TypeScript 3.8 的候选版本发布了。TypeScript 3.8 带来了许多新特性,包括新的 ECMAScript 标准功能,仅用于导入/导出类型的新语法等等。
TypeScript 3.8 为仅类型的导入和导出添加了新的语法。
import type { SomeThing } from "./some-module.js"; export type { SomeThing };
导入类型仅导入要用于类型注释和声明的声明。它总是会被完全擦除,因此在运行时不会有任何残留。 同样,导出类型仅提供可用于类型上下文的导出,并且也会从 TypeScript 的输出中删除。
TypeScript 3.8 带来了对 ECMAScript 私有字段的支持,这是 Stage-3 类字段提案的一部分,由彭博社推动完成。
class Person { #name: string constructor(name: string) { this.#name = name; } greet() { console.log(`Hello, my name is ${this.#name}!`); } } let jeremy = new Person("Jeremy Bearimy"); jeremy.#name // ~~~~~ // Property '#name' is not accessible outside class 'Person' // because it has a private identifier.
与常规属性(甚至是使用 private 修饰符声明的属性)不同,私有字段要牢记一些规则。
私有字段的另一个好处是唯一性,每个字段名称对于包含类都是唯一的。另一点值得注意的是,访问任何其他类型的私有字段将导致 TypeError!
更多详情可见发布公告:
https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-rc/
(文/开源中国)