TypeScript

126 阅读2分钟

TS类型

image.png

基础类型定义

  1. number:先定义规定变量再赋值
let a:number;
    a = 15;
  1. string:规定变量和赋值同时进行
    let b:string = '不符合变量要求报错';
  1. boolean:直接赋值以规定变量类型
// (boolean)如果没明确类型要求,按直接赋值的值的类型为变量的类型
let c = true;
  1. 字面量:以某一值来作为变量的类型,其它任何类型任何值赋值都会报错
let c:100
    c = 100;
  1. any: 只初始化变量,不规定变量类型,带有any的意思,什么类型的值都可以赋值到这个变量,尽量不用。any类型的变量可以赋值给其他类型的变量(不止影响自己,还影响别人)
let d: any;    // 相当于关闭了这个限制,赋值任何类型的变量都可以
d = []
  1. unknow:可以对其赋值任何类型的值,和any类似,但不能将unkonw类型的变量赋值给其它变量,这是和any的不同,所以unknow类型不会影响其它变量。
let f: unknown;
f = 10;
f = 'string';
  1. as || <>: 类型断言 可以用来告诉解析器变量的实际类型.
let F:string
F = f as string;
F = <string> f;
  1. | :同时对一个变量规定多个类型,或值
let e : boolean | string;
let E : 1 | 2;

复杂类型定义

  1. Function:可以直接规定类型使用,也可以先规定类型再使用
// 规定参数的类型,  规定返回值的类型
let sum = function(a: number,b:number): number{
    return a + b
}

let d:(a:number, b:number) => string
  1. viod 和 never: 区别在于一个是没有值或underfunded,一个是抛出错误不能是任何值
function fn(): void {
    return null
}

function fn1(): never {
    throw new console.error("我错了");
}
  1. object:一般不使用来限定类型,因为一切皆对象。
// {},来限定object中可以包含哪些属性
// 类似于c语言中的先声明后使用, 属性名后面加? 表示可有可没有
let b:{name : string,  age?: number}
b ={name'haha'}

// 只限制必须有name属性,其他的可有可无
let c: {namestring, [propNamestring]: any}
c = {name'何丹'sex24}
  1. Array: 两种定义方式
//方式1
let estring[]
e = ['1', 'abc']

//方式2
let e: Array<number>
e = [1, 2, 3]
  1. tuple: 元组,固定长度的数组
let f: [string, number, boolean];
f = ['a', 1, true] 
  1. enum: 枚举
enum sex{
    male = 0,
    men = 1
}
let g:{name: string, sex:sex}
g = {name: '叶凡', sex:sex.male}