打字稿:在对象内部定义 <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[]
};
或通过其他答案使用界面(可能更推荐)。
我是 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[]
};
或通过其他答案使用界面(可能更推荐)。