Typescript类型

402 阅读2分钟

以javascript为基础构建的语言,是javascript的超集。增加了一些不同于js的功能

  1. 将动态类型js语言转变为静态类型语言
  2. 在任何支持js的平台中执行
  3. ts不能被js解析器直接执行,ts需要先编译为js再执行。
  4. ts增加了类型判断,支持es的新特性,添加es不具备的新特性,丰富的配置选项,强大的开发工具

ts类型:

  • number,
  • string,
  • boolean,
  • 字面量:如 let a:"male"|"female"; (|表示或)
  • any:任意类型,跟js变量类似,可以任意赋值,相当于对该变量关闭类型检测,不建议使用此类型。声明变量不指定类型,则ts解析器会自动判断变量的类型为any let d;
  • unknown:是类型安全的any,与any的区别是不会影响其他的变量类型。unknown类型的变量,不能直接赋值给其他变量。
let e:unknown
e = 'hello'
e = true
let s:string

//unknown赋值方式
if(typeof e === 'string'){
  s = e
}
//类型断言,可以用来告诉解析器变量的实际类型。
//变量 as 类型
//<类型>变量
s = e as string
s = <string>e
  • void:用来表示空,以函数为例,就表示函数无返回值
  • never:表示永远不会返回结果
function fn2(): never{
  throw new Error('error')
}
  • object:{}用来表示对象中可以包含哪些属性
//{属性名:属性值,属性名:属性值}
//在属性名后面加?,表示属性可选的
let b:{name: string, age?: string}
b = {name:'tee'}

//[propName: string]: any 表示任意类型的属性
let c:{name: string, [propName: string]: any}
c = {name:'tee', age: 18, gender:'男'}

/*
*设置函数结构的类型声明
*语法:(形参:类型,形参:类型...)=>返回值
**/
let d: (a:number, b:number) => number
d = function(n1: number, n2: number){
  return n1+n2
}
  • array
/*
*数组类型声明
*语法:类型[],Array<类型>
**/
let e:string[]
let f:Array<string>
  • tuple:元组就是固定长度的数组,效率好于数组
/*
*语法:[类型,类型,...]
**/
let h:[string, string]
  • enum:枚举
enum Gerder{
  male = 0,
  female = 1
}
let i:{name:string, gender:Gerder}
i = { name: 'Marry', gender: Gerder.female}
  • & 表示同时"与"
//j同时具有name与age
let j: {name: string} & {age:number}
j = {name: 'xxx`, age: 18}
  • | 表示‘或’
  • 类型别名
type myType =  1|2|3|4|5
let K:myType
let K:myType