#javascript #reactjs #typescript
#javascript #reactjs #typescript
Вопрос:
В следующем случае, как определить тип функции в соответствии с b
типом параметра
const getData = (a: string, b?: string) => {
const obj: Record<string, string> = JSON.parse(a)
if (b) {
return obj[b]
}
return obj
}
const c = getData("{'kind':'cs'}")
const d = getData("{'kind':'cs'}", 'kind')
Ожидаемый:
const c = getData("{'kind':'cs'}") // result: {kind: cs} type: c => Record<string, string>
const d = getData("{'kind':'cs'}", 'kind') // result: cs type: d => string
Актуально
const c = getData("{'kind':'cs'}") // result: {kind: cs} type: c => Record<string, string> | string
const d = getData("{'kind':'cs'}", 'kind') // result: cs type: d => Record<string, string> | string
Ответ №1:
Вы можете использовать синтаксис перегрузки функций typescript.
function getData(a: string): Record<string, string>;
function getData(a: string, b: string): string;
function getData(a: string, b?: string) {
const obj: Record<string, string> = JSON.parse(a);
if (b) {
return obj[b];
}
return obj;
}
const c = getData("{'kind':'cs'}");
const d = getData("{'kind':'cs'}", "kind");