1、keyof
keyof:单目运算符,接受一个对象类型作为参数,返回该对象的所有键名组成的联合类型。
type MyObj = {
foo: number;
bar: string;
};
type Keys = keyof MyObj; // 'foo'|'bar'
interface T {
0: boolean;
a: string;
b(): void;
}
type KeyT = keyof T; // 0 | 'a' | 'b'
由于 JavaScript 对象的键名只有三种类型,所以对于任意对象的键名的联合类型就是string|number|symbol。
// string | number | symbol
type KeyT = keyof any;
顺便说一下typeof:
typeof 运算符是一个一元运算符,返回一个字符串,代表操作数的类型
keyof typeof 一起使用
先用typeof转换成类型,再用keyof聚合键名的联合类型 常用来操作一个对象
2、ReturnType 用于获取函数的返回类型
比如一些函数需要返回一些指定结构的数据
3、Record类型
Record<Keys,Type>用于创建具有特定键和统一值类型的对象类型,
比如说 你有一个数组对象 对象的key和value都是字符串类型 就可以这么定义Array<Record<string, string>>
4、Partial 将对象的所有属性变为可选
通常用于Partial<interface>来创建一个所有属性都是可选的类型,
通常用于需要局部更新一个interface类型中的某些字段
5、Required 将对象的所有属性变为必选
Required<interface> 确保我们在处理一个对象所有的字段时 具有完整性和一致性
6、Omit 用于从对象类型中移除某些属性
type Todo = {
title: string;
description: string;
createdAt: Date;
}
const todoWithoutCreatedAt: Omit<Todo, "createdAt"> = { title: "Hello", description: "World" };
// todoWithoutCreatedAt 不包含 createdAt 属性
7、Awaited
用于获取等待一个 Promise 解析后的结果类型
async function displayTodoItem() {
const todo: Awaited<TodoItem> = await fetchTodoItem();
//现在你可以在完全类型支持下使用 `todo`
console.log(`Todo Item: ${todo.id}, Title: ${todo.title}, Completed: ${todo.completed}`);
}
参考文章:https://cloud.tencent.com/developer/article/2431872
void 和 never
都是函数的返回值 void是没有值的返回 never是永远没有返回 比如说在一个throw error的函数里
any 和 unknow
any就是不检查类型,允许你将其赋值给任何类型,而不会引发错误。unknown不能直接赋值给其他类型,除非进行类型检查或类型断言。