FlowType:函数的返回类型(k)=> OBJ [k]的

时间:2017-06-06 14:22:43

标签: javascript flowtype

我有一个User对象:

type User = {
  name: string,
};

它有一个get()函数,它接受User上属性键的参数并返回该属性。 函数get是

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 ?
};

1 个答案:

答案 0 :(得分:1)

好像你现在可以使用$ElementType<T, K>。 待确认!

来源:https://github.com/facebook/flow/issues/4122#issuecomment-314700605

编辑: Working example

/* @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