TypeScript 类型

类型

boolean: 布尔类型;
array:数组类型;
string: 字符类型;
number:数字类型;
tuple:元组类型;
enum:枚举类型;
any:动态类型;
void:没有类型;
null:null类型;
undefined:undefined类型;
never:用不存在的值的类型;
object:非原始类型

原始类型

number,string,boolean,symbol,null,undefined

类型详述

number

和JavaScript一样,TypeScript里的所有数字都是浮点数。这些浮点数的类型是 number。 除了支持十进制和十六进制字面量,TypeScript还支持ECMAScript 2015中引入的二进制和八进制字面量

let num1:number = 99
let num2:number = 0xf00d
let num3:number = 0b11
let num4:number = 0o74

Array

let arr:object[] = [{},{},{}]
let arr1:Array<object> =[{},{},{}]

元组类型

已知数量和类型的数组

let sun:[string,number, boolean];
sun = ["do",10,false] //yes
sun = [10,"age",false] //no

当访问已知索引的元素,会得到一个确定的类型

console.log(sun[0].substring(1)) //ok
console.log(sun[1].substring(1)) //类型“number”上不存在属性“substring”。

当访问一个越界的元素,会通过联合类型来表示

sun[3] = "hello" // ok 字符串可以赋值为 string|number中的一个,编译会报错
sun[4] = false // ok 字符串可以赋值为 string|number中的一个,编译会报错
console.log(sun[5].toString()) //官网说可以但是实际操作不行

Any

为不清楚类型的变量指定一个类型,允许你在编译时可选择的包含或移除类型检查,Object只允许你进行赋值,而不允许你调用它的方法

let anything:any = 4
anything.ifItExists()
anything.toFixed()
let something :Object = 4
something.toFixed() //Property 'toFixed' does not exist on type 'Object'

Never

表示永不存在的类型,never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。
never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never

function error(message:string): never {
    throw new Error(message)
}
function fial() {
    return error("fail")
}
function infiniteLoop():never {
    while(true){

    }
}

类型断言

两种方式:

  • 尖括号
      let  str   = "this is a string"
      let length:number = (<string> str).length
    
  • as关键字
      let str = "this is a string"
      let length:number = (str as string).length
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容