打字稿:在对象内部定义 <T> 的数组

Typescript: Define array of <T> inside object

我是 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

您可以定义类型。

interface Wrapper {
    things: string[];
}

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

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

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

我想你的订单有点少。试试这个:

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

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