TypeScript基本类型
程序员文章站
2022-07-12 16:30:23
...
一、number | string | boolean
TS的Number | String | Boolean
和JS的差不多
// 声明一个变量A,指定为number类型
let a: number;
// 只能为数字,否则ts报错 但是开始可以编译成js
a = 10;
// a = 'a'
// 声明完变量就直接进行赋值(用的不多)
let c: boolean = false;
ts => js 可以编译成任何版本的js,默认编译版本为ES3
作用:确保代码有最好的兼容性,在不同的浏览器版本都可以正常的执行
类型推论
如果变量的声明和赋值是同时进行的,ts可以自动对变量进行类型检测
let d = false;
d = true
JS中的函数是不考虑参数的类型和个数的,因此会造成安全隐患
function sum1(a, b) {
return a + b;
}
console.log(sum1(1, 2)); // 3
console.log(sum1(1, '2')); // 12
使用ts加上类型声明 后面加上:number
function sum2(a: number, b: number) : number {
return a + b;
}
let result = sum2(1, 2) // 此时result可看出是number类型
// sum2(1, '2') 此时会报错 传值传多传少也会报错
二、字面量
使用字面量进行类型声明
let a: 10;
a = 10;
用 | 来连接多个类型(联合类型)
let b: "male" | "female";
b = "male";
b = "female";
let c: boolean | string;
c = true;
c = "hello"
三、any
any
表示任意类型 设置any
后相当于对该变量关闭了TS的类型检测
注意:使用TS时,不建议使用
any
类型 能用unknown
就不要用any
let d: any;
// 声明变量如果不指定类型,则TS解析器会自动判断变量的类型为any(隐式的any)
let e;
d = 10;
d = "hello";
d = true;
// d的类型是any,它可以赋值给任意变量
let s: string;
s = d;
四、unknown
unknown
表示位置类型的值 实际上是一个类型安全的any
let f: unknown;
f = 10;
f = "hello"
any
和unknown
的区别
// unknown不能直接赋值给别的变量,any可以
let s: string;
// s = f;
判断类型是否一致,如下:
if (typeof f === "string") {
s = f;
}
也可以使用类型断言:告诉解析器变量的实际类型
- 语法:变量 as 类型,<类型>变量
s = f as string;
s = <string>f;
五、void和never
void
用来表示空,以函数为例,就表示没有返回值的函数
可
return;
return undefined/null
都表示没有返回值
function fn1(): void {}
never
表示永远不会返回结果 (不常用)
function fn2(): never {
throw new Error('报错了')
}
六、object
下列在开发中很少使用,因为在js里的对象太多了——一切皆对象
let a: object;
a = {};
a = function () {};
下列建议使用
- 加上类型限制
{}
里用来指定对象中可以包含哪些属性 -
?
表示属性可选
let b: {name: string, age?: number};
b = {name: 'wan'} // {}里面的属性多了少了都不行
设置对象结构的类型声明:
// [propName: string]: any 表示任意类型的属性 其中propName为自定义属性
let c: {name: string,[propName: string]: any};
c = {name: 'wan', age: 21, gender: '女', check: true}
设置函数结构的类型声明:
- 语法:(形参: 类型, 形参: 类型 …) => 返回值
let d: (a: number, b:number) => number;
d = function (n1,n2): number {
return 1;
}
&
表示 且 用于连接对象等
let i: {name: string} & {age: number};
i = {name: 'wan', age: 19};
类型的别名(简化类型的使用)
type myType = 1 | 2 | 3;
let j: myType;
j = 3;
七、array和tuple
数组的类型声明:
- 语法:类型[],Array<类型>
let e: string[];
let f: Array<number>;
元组:tuple
用来固定长度的数组(存储效率比数组好一点)
let g: [string, string];
g = ['a', 'b']; // 参数也是不能多不能少
八、enum(枚举)
enum Gender {
Female, // 默认第一个参数Female为0 Male为1
Male
}
let h: {name: string, gender: Gender};
h = {
name: 'wan',
gender: Gender.Male
}
console.log(h.gender === Gender.Male);
上一篇: 快速学习-Linux权限管理
下一篇: TypeScript基本类型