基于参数名称的函数的返回类型

时间:2018-09-05 05:41:57

标签: typescript

假设我有一个这样的界面MyInterface

interface MyInterface = {
    param1: string;
    param2: number;
}

假设函数的参数值本身就是MyInterface的参数,是否有一种方法可以声明函数的返回类型:

class MyClass<T = MyInterface> {
   constructor(private params: T) {
     // ...
   }

    // The question comes here:
   get(value: keyof T): T[value] { // Obviously this doesn't work
      return this.params[value];
   }
}

1 个答案:

答案 0 :(得分:0)

您需要捕获value的类型,例如使用另一个泛型:

type MyInterface = {
    param1: string;
    param2: number;
}

class MyClass<T = MyInterface> {
   constructor(private params: T) {
     // ...
   }

   // Fixed 
   get<G extends keyof T>(value:G): T[G] {
      return this.params[value];
   }
}