Typescript 3.0到达并在2018年7月发布。微软发布了这个新版本。Typescript是基于ECMA类型安全标准的javascript的扩展版本。这其中发布了一个重大的结构变化。
在这篇文章中,我们将看到主要的功能和例子
特点
- 项目参考
- 更丰富的元组类型
- 未知类型
- 支持JSX中的DefaultProps
- 改进的错误信息传递
- API突破性变化
项目参考变更
这是一个重要的功能,对大型项目很有帮助。基本上,将你的大项目模块化为小项目,这样可以减少编译和构建的时间,代码可以在多个项目中重复使用。一个项目依赖于其他项目。每个项目都有typescript配置文件tsconfig.jso。一个项目的tsconfig.json文件可以被另一个tsconfig.json文件使用。一个大的项目可以被分成小的项目,以实现线性化的构建,构建时间在多个项目中得到改善和透明。
优势
- 改善构建时间
- 基于功能的代码的逻辑分离
- 清晰分离,代码可管理
元组类型
元组不是命名的类型,但它是不同类型的固定组合。
let tupleValue: [number,string ];
tupleValue = [ 30,"testvalue"]; // OK
为现有的元组类型增加了更多的功能
结尾的参数是可选的
参数可以作为休息运算符来应用
可选的元组类型
方法函数有两个参数,一个是布尔值,另一个是元组类型。有b和c的元组类型是可选的
function method(a: boolean, b = 30, c?: string) {
}
method(true);
method(true, undefined, "testvalue");
method(true, 100);
休止符元组类型
这里的函数方法需要零或更多的数字
function method(...a: number[]) {
}
method();
method(1,3);
method(2);
未知类型
它引入了新的内建类型未知类型,我们已经在typescript中看到了任何类型,它接受任何类型的值。任何类型在赋值或调用它之前不做任何类型检查。未知类型也和任何类型的值一样,任何类型都可以被分配到它。不同的是,任何值可以被分配给未知类型。但是你不能访问任何变量/访问/调用这些未知类型。
任何类型的用法示例
let anyType: any = 50;
// Below will compiles as anyType is of type 'any'
anyType.prop;
anyType();
new anyType();
method(anyType);
anyType `test example!`;
function method(str: string) {
return str.toLowerCase();
}
未知类型的例子
let anyType: unknown = 50;
// Below will not compile as anyType is of type 'unknown'
anyType.prop;
anyType();
new anyType();
method(anyType);
anyType `test example!`;
function method(str: string) {
return str.toLowerCase();
}
IDE支持
有不同的编辑器支持最新的typecript版本:
- Visual Studio Code
- Sublime text 3 - typescript插件
- VIsual Studio代码