ts 和 js 对比:
TypeScript 是 JavaScript 的超集,它包含了 JavaScript 的所有元素
ts基础
ts数据类型
- number 类型用于表示数字,可以是整数或浮点数。
- string 类型用于表示字符串,可以使用单引号或双引号来定义。
- boolean 类型用于表示布尔值,只有两个值:
true和false。 - null 和 undefined 分别表示空值和未定义。它们的类型分别为
null和undefined。类似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中的接口是一种抽象类型,用于多态和实现特定行为。
高级类型
联合类型,交叉类型,类型断言,类型别名
type类似于cpp的typedef ,方便理解
泛型
泛型可以在定义函数、接口或类时不预先指定类型,而是使用时指定类型。 在调用泛型函数或实例化泛型类时,如果不显示指定类型,TypeScript 编译器会根据传入的参数自动推断出类型。
function test<T>(arg: T): T {//T是一个占位符 定义函数时不用指定
return arg;
}
let val=test(“ a string");//ide自动推断
let val2=test<string> ("aaa");//在调用时指定
以上也可以用any来解决,这样就有点cpp多态的感觉
操作符
操作符在使用时不用像函数调用那样用 () ,直接用即可
常用工具类型
写在最后
over~