ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022.9.2 - ts笔记

2022-09-02 18:33:10  阅读:212  来源: 互联网

标签:string ts 笔记 Record role 2022.9 类型 type id


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,因此具有idfullNamerole字段的对象。

参考第二篇文章: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

通过 RecordPartialIntersection 类型一起工作,此代码创建了一个强类型的benefits对象,并在键和值类型之间建立关联.强类型对象使得在编译时更容易捕获错误,使 IDE 在键入时更容易标记错误,并提供具有自动完成功能的智能提示

标签:string,ts,笔记,Record,role,2022.9,类型,type,id
来源: https://www.cnblogs.com/yehuda/p/16650895.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有