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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

洪宇同学

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值