英文:
How to define class method second param's type to be based on first param's type?
问题
我想定义我的类方法的第二个参数的参数类型为方法的第一个参数的键。我尝试了类似以下的方式,但显然失败了...
class MyClass {
render(param1: Record<string, any>, param2: keyof typeof param1 ) {
// ...
}
}
const myInstance = new MyClass();
// render的第二个参数的可能值为 'a' | 'b'
myInstance.render({ a: 123, b: 456 }, 'a')
英文:
I want to define the parameter type of my class method's second parameter to be the keys of the method's first parameter.
I have tried something like the following, but obviously that failed miserably ...
class MyClass {
render(param1: ???, param2: keyof Parameters<this['render']>[0] ) {
...
}
}
const myInstance = new MyClass();
// possible values for render's second param are 'a' | 'b'
myInstance.render({ a: 123, b: 456 }, 'a')
答案1
得分: 0
你可以在方法上使用泛型类型参数,并将其定义为param1
的类型,然后将param2
定义为keyof T
:
render<T>(param1: T, param2: keyof T) {
...
}
这里有一个 TypeScript Playground 示例。
英文:
You can use a generic type param on the method and define that as the type of param1
, then define param2
to be keyof T
:
render<T>(param1: T, param2: keyof T) {
...
}
Here's a TypeScript Playground Example
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论