相关疑难解决方法(0)

如何在不使用 as 的情况下确保 TypeScript 的 string|string[] 是 string?

编辑
由于时间的推移,这个问题 已经失去了它的有效性,从评论和答案中似乎可以看出这一点。尽管最初出现,但它不是这个人的骗局。

我有一个通过以下签名工作的翻译功能。

getI18n(id: string) : string { ... }
Run Code Online (Sandbox Code Playgroud)

我注意到输入以下内容有点乏味。

const titles = [
  this.util.getI18n("Donkey"),
  this.util.getI18n("Monkey"),
  ...
  this.util.getI18n("Wonkey")
];
Run Code Online (Sandbox Code Playgroud)

我更喜欢使用这样的东西。

const titles = this.util.getI18n(["Donkey", "Monkey", ..., "Wonkey"]);
Run Code Online (Sandbox Code Playgroud)

所以我引入了一个接受stringstring[]的函数,其签名如下。

getI18n(id: string | string[]) : string | string[] { ... }
Run Code Online (Sandbox Code Playgroud)

这感觉很天才,直到我注意到我必须为愚蠢的 Typescript 解释结果是字符串而不是一些笨拙的巨型字符串或字符串数​​组,最终得到这个(对于非数组翻译)。

someValue.replace("xxx", this.util.getI18n("Donkey") as string);
Run Code Online (Sandbox Code Playgroud)

有没有办法为 TypeScript 解释输出字符串,即使在其他情况下它可能是string[]

types typescript

3
推荐指数
2
解决办法
353
查看次数

标签 统计

types ×1

typescript ×1