Typescript如何更改方法定义?
打字脚本版本:Typescript如何更改方法定义?,typescript,typescript2.0,Typescript,Typescript2.0,打字脚本版本:“^2.9.2” 这是我的密码 定义新接口的方法: interface TestRoute<R,F>{ to(r:R):F; defaultRoute:F; } 如何优雅地定义global.UserRpc.connector.authRemoter接口,从而不需要为每个方法调用TestRoute 谢谢。如果您有一个要包括的方法名列表,您可以使用它来迭代它们,并以您想要的方式转换值: type TestRoutify<T, K extends ke
“^2.9.2”
这是我的密码
定义新接口的方法:
interface TestRoute<R,F>{
to(r:R):F;
defaultRoute:F;
}
如何优雅地定义global.UserRpc.connector.authRemoter
接口,从而不需要为每个方法调用TestRoute
谢谢。如果您有一个要包括的方法名列表,您可以使用它来迭代它们,并以您想要的方式转换值:
type TestRoutify<T, K extends keyof T> =
{[P in K]: TestRoute<FrontendSession, T[K]>}
interface UserRpc {
connector: {
authRemoter: TestRoutify<AuthRemoter, 'auth'|'updateNickName'>
}
}
因此,FunctionKeys
将与RemoteAbstract
中的任何额外方法名称一起计算为'auth'|'updateNickName'
。如果RemoteAbstract
没有任何额外的方法,或者您不介意包含它们:
type TestRoutifyMethods<T> = TestRoutify<T, FunctionKeys<T>>;
interface UserRpc {
connector: {
authRemoter: TestRoutifyMethods<AuthRemoter>
}
}
类型TestRoutifMethods=TestRoutify;
接口用户RPC{
连接器:{
authRemoter:TestRoutificationMethods
}
}
如果最终引入了您不想要的方法,那么您可以尝试使用更好地表示选择条件的条件类型,或者放弃并手动指定键,就像上面的第一个解决方案一样
希望有帮助。祝你好运 谢谢你的回答。这两种方法都很有效。
type TestRoutify<T, K extends keyof T> =
{[P in K]: TestRoute<FrontendSession, T[K]>}
interface UserRpc {
connector: {
authRemoter: TestRoutify<AuthRemoter, 'auth'|'updateNickName'>
}
}
type FunctionKeys<T> =
{[K in keyof T]: T[K] extends Function ? K : never}[keyof T]
type TestRoutifyMethods<T> = TestRoutify<T, FunctionKeys<T>>;
interface UserRpc {
connector: {
authRemoter: TestRoutifyMethods<AuthRemoter>
}
}