boolean

  1. let isTrue: boolean = true

string

  1. 常用写法

    1. let name: string = 'wq'
  2. 可以用在模板字符串:可以定义多行文本、可以内嵌表达式 ```jsx const name = ‘wq’; const age = 18;

const sentence: string = ${name} is ${age +1} years old, how are you

const sentence: string = name+’is’+ (age+1) + ‘years old,’ + ‘\n’ +’how are you’; // 上面两种表意一致

  1. <a name="TsEmo"></a>
  2. ### number
  3. ```jsx
  4. let num: number = 1;

数组

数组有两种写法

  1. let arr: string[] = ['wq','hh','cc']
  2. let arr: Array<number> = [1,2,3]

元组

元祖可以用来表述一个已知元素数量和类型的数组,各元素类型不必相同

  1. let t:[string,number] = ['wq',1];
  2. // 类型和数量不匹配都会ts报错
  3. let t:[string,number] = ['wq'] //error
  4. let t:[string,number] = ['wq','1'] // error

枚举 enum

  1. enum Status {
  2. delete ,
  3. online,
  4. edit
  5. }
  6. const status1: string = Status[2] // 'edit'
  7. const status2: Status = Status.delete // 0
  8. const status3: Status = Status.online // 1
  9. 默认从 0 开始,但也可以手动指定成员 数值
  10. enum Status {
  11. delete = 2,
  12. online,
  13. edit
  14. }
  15. const status1: string = Status[2]; // 'delete'
  16. const status2: Status = Status.online; // 3
  17. 2,3,4 按顺序往下排
  18. enum Status {
  19. delete ,
  20. online = 'online1',
  21. edit = 'edit',
  22. }
  23. 可以指定成员值为字符串
  24. const status1: string = Status[0]; // 'delete'
  25. const status2: Status = Status.online; // ‘online1’
  26. const status2: Status = Status[2]; // undefined

any

表示任何类型,当某些变量不确定时,是动态的时候,可以用any来标记

  1. let notSure:any = 'wq'
  2. notSure = 12;
  3. notSure = true;
  4. // ok,不会报错

void

表示没有任何类型,啥类型也没有。通常用在函数没有返回值时

  1. function test(): void {
  2. const a = 1
  3. }

undefined null

null 和 undefined 也是一种类型。默认情况下 null 和 undefined 是所有类型的子类型,即 undefined 可以赋值给string类型
截屏2022-10-19 下午10.28.18.png
如上不会报错。
但是在正常TS项目中会报错,如下
截屏2022-10-19 下午10.32.42.png
因为在tsconfig.json里有一个属性配置 strictNullChecks,默认为true,当改为false时便不会报错。
截屏2022-10-19 下午10.35.46.png

never

nerver类型表示那些永不存在的值的类型。
例如,never是那些 总是会抛出异常或根本就不会有返回值的 函数表达式 或 箭头函数表达式的返回值类型

  1. function test():never{
  2. throw new Error('meaasge')
  3. }

never 是任何类型的子类型,可以赋值给任何类型。但没有其他类型是never的子类型,可以赋值给never类型(除了never本身外)

object

  1. let obj: object = {};
  2. obj = true // error! 报错

类型断言

类型断言,就是字面意思。告诉编译器:闭嘴,就是这个类型,不准报错!

  1. let someValue: any = 12;
  2. let strLength: number = (someValue as string).length;

通常是 any 断言成其他类型,如果一开始是 number 类型,直接断言不行。
另外还有一种写法,但是在 TypeScript 里使用 jsx 时,下面这种是不被允许的

  1. let someValue: any = "this is a string";
  2. let strLength: number = (<string>someValue).length; // 报错