【问题标题】:Typescript generic type for all variables defined定义所有变量的打字稿泛型类型
【发布时间】:2016-04-28 19:35:22
【问题描述】:

我有一个像下面这样的对象:

var objContainer = {};
objContainer.string1 = "some string";
objContainer.string2 = "some string";
....
objContainer.stringN = "some string";

我想在 TypeScript 中为 objContainer 变量创建一个类型。关键是,变量计数和名称是未知的。所以,我想引入一个逻辑,比如“对于 objContainer 的类型类中的每个变量都是字符串类型,不管它的名字”。有没有办法做到这一点?伪代码示例为:

interface ExampleInterface{
   objContainer:ExampleClass;
}
class ExampleClass{
   {All Variables}:string;
}

【问题讨论】:

    标签: javascript class interface typescript definition


    【解决方案1】:

    可能你想使用这样的界面:

    interface Map 
    {
        [K: string]: string;
    }
    
    let dict: Map = {};
    dict["string1"] = "some string";
    let val = dict["string1"];
    

    希望这会有所帮助。

    【讨论】:

    • 成功了。非常感谢。但是,此解决方案需要转换类型。我不得不更改所有代码 objContainer.string1 = "some string";到 objContainer["string1"] = "some string";.然后它起作用了。只是想知道,是否可以在不改变现有实现结构的情况下做到这一点?
    • 恐怕 - 不。如果您想要类型断言并且事先不知道您的属性。否则,您总是可以通过将 objContainer 转换为“any”来回退,如下所示:然后以原始的不安全方式访问其属性:o.string1 = '111'。
    猜你喜欢
    • 2018-05-06
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 2020-05-09
    • 2021-11-09
    相关资源
    最近更新 更多