Typescript 类型

一、类型声明

1、类型声明是TS非常重要的一个特点

2、通过类型声明可以指定TS变量的类型

3、指定类型后,当为变量赋值时,TS编译器会自动检查值是否符合类型声明,符合则赋值,否则报错。

4、自动类型判断:如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测

TypeScript 复制代码
let a = false;
a = true;  // 正确
a = '1'  // 错误

二、类型

字面量的用法:可以使用"|"来连接多个类型(联合类型)

TypeScript 复制代码
let b: "male" | "female";
b = "male";  // 正确
b = "female";  // 正确
b = "hello";  // 错误

unknown类型

TypeScript 复制代码
let e: unknown;

let s: string;

e = 'hello';

//  any 变量可以绘制给任意变量
//  unknown 实际上就是一个类型安全的any
//  unknown 类型的变量,不能直接赋值给其它变量
s = e; // 错误

if (typeof e === 'string') {
    s = e;
}

s = e as string;  //正确,类型断言
s = <string>e;

对象类型:

TypeScript 复制代码
// {}用来指定对象中可以包含哪些属性
let b: {name: string};
b = {name: '孙'} //正确
b = {name: '孙', age: ''} //错误

// 在属性名后边加上?,表示属性是可选的
let c: {name: string, age?: number};
c = {name: '孙'} //正确

// [propName: string]: any 表示任意类型的属性
let d: {name: string, [propName: string]: any}
d = {name: '孙', age: 18, gender: '男'};  // 正确

// 设置函数结构的类型声明:
// 语法:(形参:类型, 形参:类型 ...) => 返回值
let e: (a:number,b:number)=>number;
e = function(n1: number, n2: number):number {
    return n1 + n2;
}

数组类型:

TypeScript 复制代码
// string[] 表示字符串数组
let a: string[];

let b: Array<number>;

元组类型:

TypeScript 复制代码
// 元组,就是固定长度的数组,数据类型和长度都需要一致
let a: [string, string];
a = ['1', '2']; // 正确
a = ['1', '2', 3]; // 错误

枚举类型:

TypeScript 复制代码
enum Gender{
    Male = 0,
    Female = 1
}

let a: {name: string, gender: Gender};
a = {
    name: '李',
    gender: Gender.Male
}

类型的别名:

TypeScript 复制代码
type myType = 1 | 2 | 3 | 4 | 5;
let a: myType;
相关推荐
@@@@@@@@5411 小时前
JavaScript 的缺点与 TypeScript 的弥补
开发语言·javascript·typescript
用户09340777351412 小时前
HarmonyOS WPS Open SDK 实践:最小打开闭环与 enableEdit 分支处理
typescript·harmonyos
柯克七七1 天前
我把 bug 修得太干净了,测试组以为这个模块本来就没问题
前端·javascript·typescript
退休倒计时1 天前
【每日一题】LeetCode 39. 组合总和 TypeScript
算法·leetcode·typescript
yyt3630458411 天前
KlineChartQuant Tooltip 高频交互 200FPS 性能优化完整复盘
前端·经验分享·性能优化·typescript·vue·交互·chrome devtools
用户0934077735141 天前
HarmonyOS WPS Open SDK 实践:办公审批附件「打开—编辑—回传」代码实现
typescript·harmonyos
Flynt2 天前
TypeScript 5.8 让我少踩了一个大坑,顺手再聊聊 --erasableSyntaxOnly
前端·javascript·typescript
退休倒计时2 天前
【每日一题】LeetCode 17. 电话号码的字母组合 TypeScript
算法·leetcode·typescript
无情的西瓜皮3 天前
MCP 协议实战:从零搭建一个 MCP 服务器(Node.js 版)
vue.js·人工智能·typescript·node.js
退休倒计时3 天前
【每日一题】LeetCode 78. 子集 TypeScript
算法·leetcode·typescript