typescript 3.0新版本变更功能介绍及实例

169 阅读2分钟

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代码