簡體   English   中英

Typescript:將類型定義為“任何類型除外”而不觸發錯誤?

[英]Typescript: define a type as "any except type" without triggering errors?

我有一個適用於任何普通 JS object 的類型:

type Entity = {
  [k: string]: any,
};

我逐漸將 TS 添加到我的代碼庫中,因此我允許隱式任何。 使用這種類型,我可以這樣做:

const user: Entity = ...;
user.name.includes(...);

但是,如果我想將它定義為任何沒有 object 或數組值的普通 JS object:

type Entity = {
  [k: string]: string | number | boolean | null,
};

我得到: Property 'includes' does not exist on type 'string | number | boolean'. Property 'includes' does not exist on type 'string | number | boolean'.

我也試過這個,不確定它是否有效 TS:

type Entity = {
  [k: string]: Entity[k] extends Object ? never : Entity[k];,
};

但同樣的事情: Property 'includes' does not exist on type 'never'.

在這種情況下是否可以讓 TS 不拋出錯誤? 我希望它表現得好像 object 值的類型是any

除非有人想出一個非常聰明的方法來解決Object和之前的any not object工作,我建議嘗試構建類似

type Entity = {
  name?: string;
  [key: string]: string | boolean | number | undefined;
}
type Entity = {
  name?: string;
  [key: string]: any;
}

希望您可以縮小您的類型。 與此同時,我會盡可能地提高精確度和安全性。 如果Entity來自外部來源,那么您可能要考慮使用unknown類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM