簡體   English   中英

如何在 TypeScript 中鍵入普通 object

[英]How to type plain object in TypeScript

我想輸入 JavaScript 的普通 object,然后寫下:

interface PlainObject {
  [k: string]: any;
}

但我發現:

type A = keyof PlainObject // string | number

interface PlainArray {
  [k: number]: any;
}

type B = keyof PlainArray // number

問題一:為什么會這樣? 問題 2:我怎樣才能輸入一個普通的 object 像{ name: 'timi' }

這種行為是設計使然, string索引意味着 object 可以通過stringnumber進行索引。 文檔說得最好:

如果您有一個帶有字符串索引簽名的類型, keyof T將是string | number string | number (不僅僅是字符串,因為在 JavaScript 中,您可以使用字符串(object['42'])或數字(object[42])來訪問 object 屬性)。 而 T[string] 只是索引簽名的類型。

沒有辦法讓keyof只返回string的類型。 (有--keyofStringsOnly編譯器選項,但主要是為了向后兼容,不應在新代碼上啟用)

暫無
暫無

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

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