FlowType: возвращаемый тип функции (k) => obj [k]

1

У меня есть объект User:

type User = {
  name: string,
};

У этого есть функция get(), которая принимает параметр ключ атрибута для User и возвращает этот атрибут. Функция get is

User.prototype.get = (prop) => {
  return this[prop];
};

Как я могу написать это определение fonction? Вот что я получил до сих пор:

type User = {
  name: string,
  get: (k: $Keys<User>) => any, // How can I change any to the correct property type ?
};
Теги:
flowtype

1 ответ

0
Лучший ответ

Похоже, теперь вы можете использовать $ElementType<T, K>. Подтверждаем!

Источник: https://github.com/facebook/flow/issues/4122#issuecomment-314700605


EDIT: рабочий пример

/* @flow */

type User = {
  name: string,
  age: number,
}

const user: User = {
  name: 'Ilyes',
  age: 21,
}

function get<K: string>(key: K): $ElementType<User, K> {
  return user[key];
}

const number: number = get('name'); // error
const number2: number = get('age'); // works
const string: string = get('name'); // works
const string2: string = get('age'); // error

Ещё вопросы

Сообщество Overcoder
Наверх
Меню