深入浅出Typescript | 青训营笔记

62 阅读3分钟

ts 和 js 对比:

TypeScript 是 JavaScript 的超集,它包含了 JavaScript 的所有元素

image.png

ts基础

ts数据类型

  • number 类型用于表示数字,可以是整数或浮点数
  • string 类型用于表示字符串,可以使用单引号双引号来定义。
  • boolean 类型用于表示布尔值,只有两个值:truefalse
  • nullundefined 分别表示空值和未定义。它们的类型分别为 nullundefined。类似js
  • symbol 类型表示独一无二的值。
  • 数组 类型用于表示一组相同类型的值。
  • 对象 类型用于表示一个对象,可以使用接口或类型别名来定义对象的类型。
  • 枚举(enum)  类型用于定义一组命名的常数。
  • void 类型表示没有任何返回值的函数返回值类型。

数组,对象(类class),枚举,void等类型类似cpp

  • any 类型表示任意类型,可以赋予接收任意类型的值。eg:

let notSure: any = 0; notSure = 'it is a string'; // 声明为any类型并赋值为number类型,然后修改为string类型

  • unknown 类型与 any 类型类似,但更安全,因为在对 unknown 类型的值进行操作之前,需要先进行类型判断。

  • never 类型表示永不存在的值的类型,常用于抛出异常或无限循环的函数返回值类型。eg:

function test(x: string | number): boolean {
    if (typeof x === 'string'){
        return true;
    } else if (typeof x === 'number'){
        return false;
    }
    return throwError('参数格式不对');
}

function throwError(message: string): never { // 返回never类型
    throw new Error(message);
}
  • 元组(Tuple)类型用来表示一个已知元素数量和类型的数组,与数种不同,它的各元素的类型不必相同。因此需要对每个元素都显示的声明其类型,eg:
let tuple: [number,string,boolean ];// 第一个number 第二个string  第三个 boolean
tuple = {0,"aaa",true};//赋值时 数据类型要与声明时的一一对应

函数类型

类似cpp,参数列表,返回值类型,支持默认参数,支持重载等。

接口类型 interface

不同于java,TypeScript中的接口是一种类型声明,用于类型检查,而Java中的接口是一种抽象类型,用于多态和实现特定行为。

image.png

高级类型

联合类型,交叉类型,类型断言,类型别名

image.png

type类似于cpp的typedef ,方便理解

泛型

image.png

泛型可以在定义函数、接口或类时不预先指定类型,而是使用时指定类型。 在调用泛型函数或实例化泛型类时,如果不显示指定类型,TypeScript 编译器会根据传入的参数自动推断出类型。

function test<T>(arg: T): T {//T是一个占位符 定义函数时不用指定
    return arg;
}

let val=test(“ a string");//ide自动推断
let val2=test<string> ("aaa");//在调用时指定

以上也可以用any来解决,这样就有点cpp多态的感觉

操作符

操作符在使用时不用像函数调用那样用 () ,直接用即可

image.png

常用工具类型

image.png

写在最后

over~

1109033@1624206951@2.png