想要為函式創建簡單的通用介面,它接受物件的介面,第一個引數是物件的鍵,第二個是物件的 key2 [key]。
這是我的解決方案
type Test<T extends Object, K extends keyof T = keyof T, V extends keyof T[K] = keyof T[K]> = (key: K, key2: V) => void
目的
const convertFunctionsMap = {
ms: {
h: millisecondsToHours,
s: millisecondsToSeconds,
m: millisecondsToMinutes
},
s: {
h: secondsToHours,
ms: secondsToMilliseconds,
m: secondsToMinutes
},
m: {
ms: minutesToMilliseconds,
s: minutesToSeconds,
h: minutesToHours
},
h: {
ms: hoursToMilliseconds,
s: hoursToSeconds,
m: hoursToMinutes
}
}
但我得到了

CodeSandbox: https ://codesandbox.io/s/empty-leaf-cuz51r?file=/src/index.ts
uj5u.com熱心網友回復:
我不知道如何解釋,但我知道它有效
interface Test<T> {
<K1 extends keyof T, K2 extends keyof T[K1]>(key: K1, key2: K2): void;
}
const convertFunctionsMap = {
ms: {
h: 1,
s: 2,
m: 3
},
s: {
h: 1,
ms: 2,
m: 3
},
m: {
ms: 1,
s: 2,
h: 3
},
h: {
ms: 1,
s: 2,
m: 3
}
}
const getIn2: Test<typeof convertFunctionsMap> = ()=> {}
getIn2('ms', 'h');
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/490533.html
標籤:javascript 打字稿 功能 仿制药 类型
