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;
相关推荐
YHHLAI1 小时前
从零搭建一个 RESTful Todo 服务 —— Bun + TypeScript 全栈最小闭环
后端·typescript·restful
退休倒计时1 小时前
【每日一题】LeetCode 19. 删除链表的倒数第 N 个结点 TypeScript
leetcode·链表·typescript
Sammyyyyy2 小时前
月之暗面 Kimi Code 0.4.0 发布,终端 AI 编码助手全面采用 TypeScript,实现毫秒级启动
前端·javascript·人工智能·ai·typescript·servbay
昭昭颂桉a5 小时前
TypeScript 前端的必修课,从 JS 到 TS
开发语言·前端·javascript·typescript
俩毛豆6 小时前
HarmonyOS7开发者公开招募
typescript
退休倒计时1 天前
【每日一题】LeetCode 142. 环形链表 II TypeScript
算法·leetcode·链表·typescript
夕夕木各1 天前
探究 TypeScript 类型体操里的 Equal 和 IsAny
typescript·源码阅读
GuWenyue1 天前
10分钟搞定TodoList实战!从0搭建Bun+TS的RESTful接口服务
前端·typescript·bun
rising start1 天前
九、vue3 组件通信:全场景详解
前端·vue.js·typescript
向上的车轮1 天前
TypeORM 1.0 正式发布:新一代 Node.js ORM 框架全面解析
typescript·node.js·typeorm