2022.9.2 - ts笔记
作者:互联网
TypeScript 中的代码清道夫:非空断言操作符
value: {
type!: Array,
required: true
},
类型别名及导入导出,对数组内的对象做限制
// util/type.d.ts
// 类型别名
type RouteMeta = {
name: string;
method: string;
path: string;
isVerify: boolean;
}
export {
RouteMeta,
}
// util/router.ts
import { RouteMeta } from './type'
// 对数组内的对象做限制
const app : RouteMeta[] = [
{
name: 'string',
method: 'string',
path: 'string',
isVerify: false,
}
]
Typescript高级类型Record
// type PlainObject = { [P: string]: any };
type PlainObject = Record<string, any>;
定义:
Record<K,T>
构造具有给定类型T
的一组属性K
的类型。在将一个类型的属性映射到另一个类型的属性时,Record
非常方便。
示例:
interface EmployeeType {
id: number
fullname: string
role: string
}
let employees: Record<number, EmployeeType> = {
0: { id: 1, fullname: "John Doe", role: "Designer" },
1: { id: 2, fullname: "Ibrahima Fall", role: "Developer" },
2: { id: 3, fullname: "Sara Duckson", role: "Developer" },
}
Record
的工作方式相对简单。在这里,它期望数字作为类型,属性值的类型是EmployeeType
,因此具有id
,fullName
和role
字段的对象。
参考第二篇文章:TypeScript的Record类型说明
高级用法
Record
类型可以和其他的工具类型一起使用,可以实现更高级的用法。
type seniorRole = 'manager'
type technicalRole = 'developer'
const benefits: Partial<Record<seniorRole, 'Free Parking'> & Record<technicalRole, 'Free Coffee'>> = {};
benefits.manager = 'Free Parking';
benefits.developer = 'Free Parking';//ERROR: no free parking for dev
通过 Record
、Partial
和 Intersection
类型一起工作,此代码创建了一个强类型的benefits
对象,并在键和值类型之间建立关联.强类型对象使得在编译时更容易捕获错误,使 IDE 在键入时更容易标记错误,并提供具有自动完成功能的智能提示
标签:string,ts,笔记,Record,role,2022.9,类型,type,id 来源: https://www.cnblogs.com/yehuda/p/16650895.html