Record 是 TS 內(nèi)置的一個高級類型,是通過映射類型的語法來生成索引類型的
type Record<K extends string | number | symbol, T> = {
[P in K]: T;
}
比如傳入 'a' | 'b' 作為 key,1 作為 value,就可以生成這樣索引類型:
type res = {
a: 1,
b: 1
}
type res = Record<'a' | 'b', 1>
所以這里的 Record<string, any> 也就是 key 為 string 類型,value 為任意類型的索引類型,可以代替 object 來用,更加語義化一點(diǎn):
type res = {
[x: string]: any
}
type res = Record<string, any>
Record 與 object區(qū)別
TypeScript允許訪問類型Record<any, any>對象得任何屬性,即使特定鍵未知
let a: Record<any, any>;
a.foo; // works
object對象上,鍵不會被假定為any,TypeScript不知道哪些密鑰實(shí)際存在,但它不允許訪問任何密鑰
let b: object;
a.foo; // error: Property "foo" does not exist on type "object" 錯誤:類型“object”上不存在屬性“foo”
object與Object?使用區(qū)別
object定義是一個對象類型,不能自動獲取對象上的屬性和方法
object類型只能定義對象類型,不能定義其他類型
?
Object 也是不可以自動獲取定義的對象上的屬性和方法,
?但是可以獲取對象自身上的屬性和方法
Object類型可以定義任何類型
var a: Object = []
Object只能賦給任意值,不能調(diào)用方法
參考:
真實(shí)案例說明 TypeScript 類型體操的意義 - 知乎文章來源:http://www.zghlxwxcb.cn/news/detail-569490.html
TS學(xué)習(xí) unknown、any、 object、Object 的區(qū)別使用_ts object_你還差的遠(yuǎn)呢。的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-569490.html
到了這里,關(guān)于ts定義對象類型Record<string, any>;和object、Object的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!