edit
由于时间的推移,这个问题从对此的评论和回答看来,它已经失去了有效性。尽管最初出现,但它并不是这个的骗局。
我有一个翻译功能,通过以下签名工作。
getI18n(id: string) : string { ... }
我注意到输入以下内容有点乏味。
const titles = [
this.util.getI18n("Donkey"),
this.util.getI18n("Monkey"),
...
this.util.getI18n("Wonkey")
];
我更喜欢使用这样的东西。
const titles = this.util.getI18n(["Donkey", "Monkey", ..., "Wonkey"]);
所以我引入了一个接受的函数string and string[]带有以下签名。
getI18n(id: string | string[]) : string | string[] { ... }
这感觉很天才,直到我注意到我必须为愚蠢的打字稿解释结果是string而不是一些胡言乱语字符串或字符串数组东西,以这个结束(对于非数组翻译)。
someValue.replace("xxx", this.util.getI18n("Donkey") as string);
有没有办法解释 TypeScript 的输出is string即使它可能string[]在其他情况下?