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;
相关推荐
叫我阿柒啊13 小时前
从Java全栈到前端框架:一场真实的技术面试对话
java·vue.js·spring boot·微服务·typescript·前端开发·后端开发
老前端的功夫18 小时前
TypeScript 类型守卫:从编译原理到高级模式
前端·javascript·架构·typescript
ttod_qzstudio19 小时前
备忘录之事件监听器绑定陷阱:为什么 .bind(this) 会移除失败?
javascript·typescript·内存泄漏·事件监听
Hao_Harrision1 天前
50天50个小项目 (React19 + Tailwindcss V4) ✨ | DoubleClickHeart(双击爱心)
前端·typescript·react·tailwindcss·vite7
梦6501 天前
基于 Vue3 + TypeScript 封装 UEditor 富文本编辑器组件
前端·vue.js·typescript
千寻girling1 天前
计算机组成原理-全通关源码-实验(通关版)---头歌平台
前端·面试·职场和发展·typescript·node.js
yanghuashuiyue2 天前
Vue3难以统一的命名规范
前端·vue.js·typescript
JQ_Zhang3 天前
消失的光标——深度解析:Slate.js 全量更新结构后的光标恢复方案
typescript
cypking3 天前
解决 TypeScript 找不到静态资源模块及类型声明问题
前端·javascript·typescript
开发者小天3 天前
React中useCallback的使用
前端·javascript·react.js·typescript·前端框架·css3·html5