banner
banner
banner
NEWS LETTER

TS-基础类型和类型推论

Scroll down

基础类型

布尔值

1
let isBoolean: boolean = true or false

数字

1
let isNumber: number = 6 // 可赋值null和undefined

字符串

1
let age: string = `this ${变量}`

数组

1
let list: number[] or Array<number>= [1, 2, 3] // 数值类型的数组

元组(Tuple):已知元素数量和类型的数组,各元素的类型不必相同

1
2
let x: [string, number]
x = ['hello',10] // 顺序不能写错

枚举

any:允许赋任意值,且可以调用在这个变量上的任意方法,而Object不能调用这些方法

1
2
let list: any[] = [1, true, "free"];
list[1] = 100; // 给list[1]赋值,覆盖原数组

空值(void): 没有返回值的返回类型

null和undefined: 返回各自类型

  • 默认情况下,可以赋值给number
  • 指定–strictNullChecks标记,null和undefined只能赋值给void和自己

Never

  • 永不存在的值的类型(异常,箭头函数返回值,无返回值的函数表达式,永不为真的变量)
  • never可以赋值给其它类型,但除never本身,任意类型都不可以赋值给never

Object

1
2
3
declare function create(o: object | null): void
create({ prop: 0 }) // 这里规定只可以出现对象或null,其它为error
obj[key] // obj[]是对象的一种写法,将key作为obj里面的一个key,返回value

类型断言:类型转换

is关键字

  • 当一个变量存在多个类型时,编译器识别不出来使用
  • eg: 假值判断
    1
    2
    export type Falsy = false | '' | 0 | null | undefined;
    export const isFalsy = (val: unknown): val is Falsy => !val;

“尖括号”语法: 使用<>指定someValue的类型为string

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

as语法:使用as指定类型

  • 在TS里使用JSX时,只有as语法断言是被允许的
    1
    let strLength: number = (someValue as string).length

类型推论

基础类型,通过值来推出类型: 发生在初始化变量和成员,设置默认参数值和决定函数返回值时

最佳通用类型

  • 多个表达式中存在不同类型,需要找到通用的类型
  • 有存在共享相同的类型时,可以通过类,继承关系将选项中不存在的值类型获取到
    • let zoo: Animal[] = [new Rhino(), new Elephant(), new Snake()];
  • 如未找到最佳通用类型,类型推断的结果为联合数组类型
    • (Rhino | Elephant | Snake)[]

上下文类型

  • 通过 = 或 : 的左边来推出右边的类型(明确给出类型则忽略推断结果)
  • 使用场景: 函数的参数,赋值表达式的右边,类型断言,对象成员和数组字面量和返回值语句。
其他文章
cover
VUE2-基础(主了解)
  • 24/11/01
  • 13:58
  • VUE
cover
TS-泛型 <>
  • 24/11/01
  • 11:40
  • TypeScript
目录导航 置顶
  1. 1. 基础类型
    1. 1.1. 布尔值
    2. 1.2. 数字
    3. 1.3. 字符串
    4. 1.4. 数组
    5. 1.5. 元组(Tuple):已知元素数量和类型的数组,各元素的类型不必相同
    6. 1.6. 枚举
    7. 1.7. any:允许赋任意值,且可以调用在这个变量上的任意方法,而Object不能调用这些方法
    8. 1.8. 空值(void): 没有返回值的返回类型
    9. 1.9. null和undefined: 返回各自类型
    10. 1.10. Never
    11. 1.11. Object
  2. 2. 类型断言:类型转换
    1. 2.1. is关键字
    2. 2.2. “尖括号”语法: 使用<>指定someValue的类型为string
    3. 2.3. as语法:使用as指定类型
  3. 3. 类型推论
    1. 3.1. 最佳通用类型
    2. 3.2. 上下文类型
请输入关键词进行搜索