Javascript Typescript:定义<;的数组;T>;内部对象

Javascript Typescript:定义<;的数组;T>;内部对象,javascript,arrays,typescript,object,strong-typing,Javascript,Arrays,Typescript,Object,Strong Typing,我来自JS背景,正在学习TS 我想用一个字段(字符串数组)定义一个对象,同时利用强类型 let wrapper = { things: ['Thing 1'] } wrapper.things[0] = 3; // wrong 现在,这是有效的(我的意思是它会导致一个错误),因为您不能将一个数字作为字符串数组分配给推断出的。但是,如果我不想为事物提供初始值,该怎么办?大概是这样的: let wrapper = { things<String>: [] } wrapper

我来自JS背景,正在学习TS

我想用一个字段(字符串数组)定义一个对象,同时利用强类型

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

wrapper.things[0] = 3; // wrong
现在,这是有效的(我的意思是它会导致一个错误),因为您不能将一个数字作为字符串数组分配给推断出的。但是,如果我不想为
事物
提供初始值,该怎么办?大概是这样的:

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

wrapper.things.push(3) // wrong
wrapper.things.push('abc') // correct
let wrapper={
事物:[]
}
wrapper.things.push(3)//错误
wrapper.things.push('abc')//正确
您可以定义类型

interface Wrapper {
    things: string[];
}

const wrapper: Wrapper = { things: [] };
或者,如果它不是特别可重用的,则将其内联:

const wrapper: { things: string[] } = { things: [] };
您可以定义一个类型

interface Wrapper {
    things: string[];
}

const wrapper: Wrapper = { things: [] };
或者,如果它不是特别可重用的,则将其内联:

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

我想你只是稍微把订单弄错了。试试这个:

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

或者通过另一个答案使用一个界面(可能更推荐)。

我想您只是稍微取消了订单。试试这个:

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

或者通过另一个答案使用接口(可能更推荐)。

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