【问题标题】:Typescript: Define array of <T> inside object打字稿:在对象内部定义 <T> 数组
【发布时间】:2021-05-13 09:40:53
【问题描述】:

我是JS出身,正在学习TS。

我想定义一个具有单个字段的对象,它是一个字符串数组,同时利用强类型。

let wrapper = {
  things: ['Thing 1']
}

wrapper.things[0] = 3; // wrong

现在,这行得通(我的意思是它会导致错误),因为您无法将数字分配给已推断作为字符串数组的内容。但是,如果我不想为things 提供初始值怎么办?像这样的:

let wrapper = {
  things<String>: []
}

wrapper.things.push(3) // wrong
wrapper.things.push('abc') // correct

【问题讨论】:

  • 可能是let wrapper :{things:string[]} = { things: [] } ?

标签: javascript arrays typescript object strong-typing


【解决方案1】:

我认为您的订单有点少。试试这个:

const wrapper = {
  things: [] as string[]
};

或通过其他答案使用界面(可能更推荐)。

【讨论】:

    【解决方案2】:

    你可以定义一个类型。

    interface Wrapper {
        things: string[];
    }
    
    const wrapper: Wrapper = { things: [] };
    

    或者,如果它不是特别可重用,内联它:

    const wrapper: { things: string[] } = { things: [] };
    

    【讨论】:

      猜你喜欢
      • 2023-02-08
      • 1970-01-01
      • 2020-12-22
      • 1970-01-01
      • 2023-01-05
      • 2017-09-19
      • 2021-12-21
      • 2023-02-05
      • 2020-12-24
      相关资源
      最近更新 更多