首页 > 解决方案 > How to type this advanced function in Typescript?

问题描述

This is the tricky function :

function getPropertyName(obj, expression) {
    var res = {};
    Object.keys(obj).map(k => { res[k] = () => k; });
    return expression(res)();
}

And my unsuccessful attempt to type it :

  getPropertyName<T>(obj: T, expression: (o: T) => any): string {
    let res = {};
    Object.keys(obj).map(k => { res[k] = () => k; });
    return expression(res as T)();
  }

标签: typescripttypescript-typings

解决方案


这不会给你任何错误,但是,你的意图对我来说并不完全清楚:

getPropertyName<T>(obj: T, expression: (o: T) => any): string {
    const res: { [key: string]: any } = {};
    Object.keys(obj).map((k) => { res[k] = () => k; });
    return expression(res as T)();
}

推荐阅读