typescript获取属性名_typescript自定义属性名称

是的,它有一定的灵活性,但不太灵活-您可以使用从数据推断出的方法名的类型,但数据必须以字符串文本的形式出现-您不能使用包含方法所需名称的变量,请将该变量传递给

module

函数并神奇地获取具有该名称的类型。

我不确定这是否值得:

declare function module(

instance: I,

options: module.Options

): module.Module

declare namespace module {

interface DefaultModule {

use(): any;

after(): any;

ready(): any;

}

type Module =

string extends U ? DefaultModule :

string extends A ? DefaultModule :

string extends R ? DefaultModule :

// here we have specific names in U, A, R, not just strings

{ [u in U]: () => any } & { [a in A]: () => any } & { [r in U]: () => any }

;

interface Options {

expose?: {

use?: U;

after?: A;

ready?: R;

}

}

}

interface ExposeNames {

useName: U;

afterName: A;

readyName: R;

}

function moduleOptions({useName, afterName, readyName}: ExposeNames): module.Options {

return {

expose: {use: useName, after: afterName, ready: readyName}

}

}

const moduleA = module({}, {});

moduleA.use();

const moduleB = module({}, moduleOptions({ useName: 'use1', afterName: 'after1', readyName: 'ready1' }));

moduleB.use1();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值