typescript实现class时,get属性返回的值不是预期的类型?
ts代码
export function test<T extends object>(data: T): Record<'test', T> {
return { test: data }
}
class Helper<T extends object> {
test(data: T) {
return test<T>(data)
}
}
type TestType<T extends object> = ReturnType<Helper<T>['test']>
interface DataType {
code: string
}
const testDate = test<DataType>({ code: '123' })
class TestClass<T extends TestType<any>> {
data: T
get test() {
return this.data.test
}
constructor(data: T) {
this.data = data
}
}
const testInstance = new TestClass(testDate)
testInstance.test
test那的类型不对
回复
1个回答

test
2024-07-15
已使用infer解决
type TestInfer<T extends object> = T extends TestType<infer U> ? U : any
class TestClass<T extends TestType<any>, P extends TestInfer<T>> {
data: TestType<P>
get test() {
return this.data.test
}
constructor(data: TestType<P>) {
this.data = data
}
}
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容