TypeScript как создать функцию с условным типом возврата? - PullRequest
0 голосов
/ 23 января 2020

Я хотел бы написать функцию с условным типом возврата. Если функция получает значение «val1» в качестве аргумента, она возвращает строковый тип, если «val2» возвращает тип числа и т. Д.

Простой пример

детская площадка: здесь

const store = {
  val1: 'string',
  val2: 1,
  val3: true
};

type INames = keyof typeof store; // "val1" | "val2" | "val3"
const getFromStore = (paramName: INames) => {
  return store[paramName];
};

const res = getFromStore('val1'); // return type is string | number | boolean instead of string
res.split(''); // error

Ответы [ 2 ]

2 голосов
/ 23 января 2020
const store = {
    val1: 'string',
    val2: 1,
    val3: true
};

const getFromStore = <K extends keyof typeof store>(paramName: K) => {
    return store[paramName];
};

const res = getFromStore('val1');
res.split('');
0 голосов
/ 23 января 2020

функция разделения работает на строку, пожалуйста, обратите внимание это

toФиксированная функция работает на число, пожалуйста, смотрите это

Так , если вы конвертируете res и res2 в правильный формат, а затем применяете правильную функцию. Возможно, вы поймаете ожидаемый результат.

Я внес некоторые изменения в ваш код. (Преобразование res в строку и преобразование res2 в число). Пожалуйста, обратите внимание на ваш измененный код здесь и здесь

...