TypeScript基础(一)

基础类型

  1. 基本类型:boolean、number、string
  2. 数组:let list: number[] = [1,2,3,4] 或者 let list: Array = [1,2,3,4]
  3. 元组:let x: [number,string] = [1,‘vapour’] (元组类型允许表和表示一个已知元素数量和类型的数组,各元素的类型不必相同)
  4. 枚举:(提供一个映射关系,即MALE映射0,FEMALE映射1,通过Sex[0]或者Sex[MALE]取值)
enum Sex {
    
    
  'MALE',
  'FEMALE',
  'UNKNOWN'
}

const sexConvert = {
    
    
  [Sex.MALE]:'男',
  [Sex.FEMALE]:'女',
  [Sex.UNKNOWN]:'未知',
}

let sex:Sex = sexConvert[Sex.MALE]
  1. Object: (Object类型的变量只是允许给他赋任意值,但是不能够在它上面调用任意的方法,即便它真的有这些方法)
  2. any: let list: any[] = [1,true,false,‘vapour’] (允许在编译时移除类型检查)‘
  3. void
// 定义函数返回值类型void   (写在参数括号之后)
function fn():void {
    
    

}
const fn1 = function():void {
    
    

}
const fn2 = (): void => {
    
    

}

// void类型的变量,只能赋值它undefined和null
let x: void = undefined
  1. null 和 undefined
    默认情况下null和undefined是所有类型的子类型。 就是说可以把 null和undefined赋值给number类型的变量。
  2. never (基本用不到)
  3. 类型断言
    两种形式:
let someValue:any = 'this is a string';
// a写法
let strLength:number = (someValue as string).length
// b写法(尖括号)
let strLength:number = (<string>someValue).length
  1. 显示赋值断言 “!”
    前提情节: ts2.7引入了一个新的flag:–strictPropertyInitialization。这个flag检查并确保一个在初始化时,每一个属性都必须在构造器内初始化,或者在属性定义时赋予初始值
    解决办法:
    a. 一种解决办法是把 foo 的类型改成 boolean | undefined
    b. foo!: number; (由用户自己保证,这个属性在使用前会初始化,类型检查不管这个属性) —> 官方把这个属性称为 Definite Assignment Assertions,中文文档翻译为显式赋值断言。

猜你喜欢

转载自blog.csdn.net/qq_36303110/article/details/112993914