interface API {
(): { token: string };
}
const api: API = function () {
const a: ReturnType<API> = {
token: "",
/** 这里报错 */
a: " ",
};
/** 这里不报错 */
return {
token: "",
a: " ",
};
};
interface API {
(): { token: string };
}
const api: API = function () {
const a: ReturnType<API> = {
token: "",
/** 这里报错 */
a: " ",
};
/** 这里不报错 */
return {
token: "",
a: " ",
};
};
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
之前旧的回答理解错了
题主想要的效果,个人感觉其实是不太符合逻辑的,或者说这种情况在ts类型中是没毛病的,正常的
我有一个方法
getUserInfo()
返回了对象类型{ name: string, age: number }
我把这个方法赋值给一个新方法
getUserInfoName = getUserInfo
规定getUserInfoName
的类型只能返回{name: string}
这个操作是兼容的跟下面这个例子同理:
info
又不知道自己要被赋值给谁假如在js
nameInfo = info
然后调用nameInfo.age
有问题吗?本来就没问题在
ts
中nameInfo: NameInfo = info
赋值没问题是因为这种操作是兼容的,然后调用nameInfo.age
ts 就会报错,其他的key你不用不就行了下面是各种情况:在线例子
旧回答:
可以写一个高级类型,类似于
ReturnType
的增强,给函数类型返回值类型替换一下