第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法將 Map<K,V> 類型轉(zhuǎn)換為 Object 類型?

有沒有辦法將 Map<K,V> 類型轉(zhuǎn)換為 Object 類型?

陪伴而非守候 2023-03-18 14:57:51
比方說,我有這個:const keys = ["name","age"] as const;type values = [string, number];const obj : Object<keys,values> = {    name : "foo", age : 20} // as Map<keys,values> valid !const obj2 : Object<keys,values> = {    name : "foo"} // as Map<keys,values> error, age is missing!const obj3 : Object<keys,values> = {    name : "foo", age : null} // as Map<keys,values> error, age is not a number!我想從鍵和值數(shù)組創(chuàng)建一個對象類型。我該怎么做 ?
查看完整描述

2 回答

?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個贊

type keys = ['name', 'age']

type values = [string, number]


type ZipTuple<T extends readonly any[], U extends readonly any[]> = {

? [K in keyof T]: [T[K], K extends keyof U ? U[K] : never]

}


type KeyValTuplesToObject<K extends readonly PropertyKey[], V extends readonly any[]> = ZipTuple<

? K,

? V

>[number] extends infer Z

? ? [Z] extends [[any, any]]

? ? ? { [P in Z[0]]: Extract<Z, [P, any]>[1] }

? ? : never

? : never


type Obj = KeyValTuplesToObject<keys, values>


const obj: Obj = {

? name: 'foo',

? age: 20

} // as Map<keys,values> valid !


const obj2: Obj = {

? name: 'foo'

} // as Map<keys,values> error, age is missing!


const obj3: Obj = {

? name: 'foo',

? age: null

} // as Map<keys,values> error, age is not a number!


查看完整回答
反對 回復(fù) 2023-03-18
?
隔江千里

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個贊

你在這里有兩個問題:

  1. Objecttype 不是你想要的。Object在 TS 中代表任何非原始類型,并且它不是通用的。

  2. 普通 JS 對象與對象屬于不同的類型Map,盡管它們都繼承自 Object 原型。

解決方案:

// Define correct type for your object

type MyObject = {

? 'name': string;

? 'age': number;

}


const obj: MyObject? = {

? name: "foo",

? age: 20

}


// Create Map from object

const map = new Map(Object.entries(obj));


現(xiàn)在map自動推斷為Map<string, string | number>


查看完整回答
反對 回復(fù) 2023-03-18
  • 2 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號