ArkTS-Record详解

Record 基本认识

  • 泛型Record用于将类型(键类型)的属性映射到另一个类型(值类型)。常用对象字面量来初始化该类型的值:
let map: Record = {
  'John': 25,
  'Mary': 21,
}

map['John']; // 25
  • 类型K可以是字符串类型或数值类型,而V可以是任何类型。
interface PersonInfo {
  age: number
  salary: number
}
let map: Record = {
  'John': { age: 25, salary: 10},
  'Mary': { age: 21, salary: 20}
}

Record 的特点

灵活的键类型和值类型

  • 键可以是任何类型,如字符串、数字、符号等。
  • 值也可以是任何类型,包括原始类型、对象类型、函数类型等。

可以用于类型约束

  • 在函数参数或变量声明中,可以使用Record来约束对象的结构。

可扩展性

  • 可以通过扩展Record类型来添加更多的键值对。

Record 的案例

  • 创建一个表示用户信息的对象类型
type UserInfo = Record;

const user: UserInfo = {
    'name': 'Alice',
    'age': 30,
    'email': 'alice@example.com',
};
  • 定义一个函数,接受一个特定结构的 Record 类型参数
type OptionRecord = Record<'option1' | 'option2' | 'option3', boolean>;

function processOptions(options: OptionRecord) {
  if (options.option1) {
    console.log('Option 1 is enabled.');
  }
  if (options.option2) {
    console.log('Option 2 is enabled.');
  }
  if (options.option3) {
    console.log('Option 3 is enabled.');
  }
}

const myOptions: OptionRecord = {
  'option1': true,
  'option2': false,
  'option3': true,
};

processOptions(myOptions);

在这个案例中,函数processOptions接受一个特定结构的Record类型参数,其中键只能是’option1’、’option2’和’option3’,值为布尔类型。

  • 扩展 Record 类型
type BaseRecord = Record<'key1' | 'key2', string>;

type ExtendedRecord = BaseRecord | Record<'key3', number>;

const extendedObj: ExtendedRecord = {
  'key1': 'value1',
  'key2': 'value2',
  'key3': 123,
};
  • Record 与联合类型结合
type ActionType = 'login' | 'logout' | 'create' | 'update';
type ActionValue = string | number | boolean;

type UserActions = Record;

const actions: UserActions = {
  'login': '2024-10-16 08:00',
  'logout': false,
  'create': 1234,
  'update': 'new data',
};
type EventHandler = () => void;
type EventMap = Record<'click' | 'hover' | 'submit', EventHandler>;

const eventHandlers: EventMap = {
    'click': () => console.log('Clicked!'),
    'hover': () => console.log('Hovered!'),
    'submit': () => console.log('Submitted!'),
};
阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.1024c.cn/archives/22024,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?