typescript - Hur skapar man ett alias för typ?
Jag har många funktioner med generisk typ KEY extends keyof Setting för att begränsa typer. Till exempel:
setValue('name', 'Alex') // ok
setValue('name', false) // error
setValue('name', 30) // error
setValue('isVerified', true) // ok
type Setting = {
name: string,
age: number,
isVerified: boolean,
}
type SettingObject<KEY extends keyof Setting> = { [P in KEY]: Setting[P] }
async function setValue<KEY extends keyof Setting>(key: KEY, value: Setting[KEY]): Promise<void> { ... }
async function setValueArray<KEY extends keyof Setting>(values: SettingObject<KEY>): Promise<void> { ... }
async function getValue<KEY extends keyof Setting>(key: KEY): Promise<Setting[KEY]> { ... }
async function getValueArray<KEY extends keyof Setting>(keys: KEY[]): Promise<SettingObject<KEY>> { ... }
Finns det ett sätt att skapa en kort alias för KEY extends keyof Setting
// pseudocode
type SettingKey = KEY extends keyof Setting
Svar #1
KEY är inte en typ, det är ett typargument, du kan inte ge det ett alias. Du kan däremot ge keyof Setting ett alias som
type SKey = keyof Setting
// ...
type SettingObject<KEY extends SKey> = { [P in KEY]: Setting[P] }
