TypeScript 4.3 Beta 发布

来源: OSCHINA
编辑: 局长
2021-04-07

TypeScript 4.3 Beta 已发布。此版本更新亮点包括:支持自动补全 import 语句、改进 Template String Type(模板字符串类型)、@link标签的编辑器支持、引入static索引签名功能等。

支持自动补全 import 语句

通过利用 auto-imports 功能(原理是提供所有可能的导出,并在文件顶部自动插入导入语句),当开发者输入 import 关键字后即可生成完整的导入语句,其中包括所要编写的路径。

改进 Template String Type

Template String Type(模板字符串类型)是最近版本才引入的类型构造,这些类型可以通过级联来构造新的类似字符串的类型:

type Color = "red" | "blue";
type Quantity = "one" | "two";

type SeussFish = `${Quantity | Color} fish`;
// same as
//   type SeussFish = "one fish" | "two fish"
//                  | "red fish" | "blue fish";

或匹配其他类似字符串类型的模式:

declare let s1: `${number}-${number}-${number}`;
declare let s2: `1-2-3`;

// Works!
s1 = s2;

此版本的改进包括:在 TypeScript 推断模板字符串类型的时候,当模板字符串由类似字符串字面量的类型在上下文中类型化时,它将尝试为该表达式指定模板类型。

function bar(s: string): `hello ${string}` {
    // Previously an error, now works!
    return `hello ${s}`;
}

另一项改进为 TypeScript 现在可以更好地关联不同看的模板字符串类型,并在它们之间进行推断。

declare let s1: `${number}-${number}-${number}`;
declare let s2: `1-2-3`;
declare let s3: `${number}-2-3`;

s1 = s2;
s1 = s3;

@link标签的编辑器支持

TypeScript 现在支持解析@link标签链接的声明。

/**
 * This function depends on {@link bar}
 */
function foo() {

}

function bar() {

}

引入static索引签名功能

索引签名 (Index Signatures) 支持在某个值上设置比类型显式声明更多的属性。

class Foo {
    hello = "hello";
    world = 1234;

    // This is an index signature:
    [propName: string]: string | number | undefined;
}

let instance = new Foo();

// Valid assigment
instance["whatever"] = 42;

// Has type 'string | number | undefined'.
let x = instance["something"];

详情查看 发布公告

展开阅读全文
1 收藏
分享
加载中
最新评论 (2)
如果模板字符串里能支持一些简单的正则,绝对原地起飞
2021-04-07 11:04
0
回复
举报
类型瑜伽?
2021-04-07 11:48
0
回复
举报
更多评论
2 评论
1 收藏
分享
返回顶部
顶部