简体   繁体   English

如何在Typescript中键入此高级功能?

[英]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)();
  }

This will give you no errors, however, your intention is not completely clear to me: 这不会给您任何错误,但是,您的意图对我而言并不完全清楚:

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)();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM