在Typescript中是否可以定义“字符串类型的数组对象”(正确位置的类型检查)?

9

我知道在TypeScript中,一个对象可以通过类名(ES6 class)或'any'进行类型定义。

我也知道你可以定义一个字符串数组(string []),甚至是一个字符串数组的数组(string [][])。

我需要表达一个属性仅为字符串类型数组的对象的类型。

例如:

export var MY_VAR: any = {
    <string[]> p1: [...]
}

我尝试使用类似任何以下对象名称:但没有成功。
我还尝试过任何以下的对象名称,并在每个对象的数组之前。
无论哪种情况,我都有语法错误(见上面的示例)。 编辑 显然。
export var MY_VAR: any = {
    <string[]> p1: [...]
}

works instead. 然而我不明白它们之间的区别是什么

2个回答

26

不太清楚你在问什么,但如果我理解正确的话:

interface MyType {
    [key: string]: string[];
}

或者内联:

let myArrays: { [key: string]: string[] } = {};

谢谢。你能否澄清 <string[]> p1p1: string[] 之间的区别(请参见我的第一个和第二个示例)? - dragonmnl
基本上,<string[]> p1 表示将 p1 强制转换为字符串数组 (string[] 就像 Array<string>)。但在你的例子中,你将键强制转换为字符串数组,而不是值。但即使你将值强制转换,它只是一个特定的值,它对对象本身没有任何意义(你定义为 any)。 - Nitzan Tomer

0
在我的情况下,我只需要一个字符串数组,而不是一个字符串数组对象。我一直在错误地阅读语法。也许这会帮助其他人:
type arrayOfString {
  arrayOfColors: string[];
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接