请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于指定泛型的问题

/* 泛型generic 泛指的类型 */
type numberType = {
  count: number
};
type stringType = string;
function a<T, P>(first: T, second: P) {
  return `${first}${second}`
}
a<numberType, stringType>({count:123}, '3521')

老师我这里的a函数里面的first参数为什么没有提醒这个count属性呢,如果硬写上去那么会报错
any 类型
“T”上不存在属性“count”

直接在命令行执行的话会显示 Property ‘count’ does not exist on type ‘T’.

正在回答 回答被采纳积分+3

2回答

阿聪M 2021-07-21 14:59:11
/* 泛型generic 泛指的类型 */
class numberType {count: number = 0};
type stringType = string;
function a<T, P>(first: T, second: P) {
    if (first instanceof numberType) {
        return `${first.count}${second}`
    }
    return `${first}${second}`
}
const b = { count: 123 }
a<numberType, stringType>({ count: 123 }, '3521')

你应该是想在a函数中使用first.count,  

然后这种情况就用上类型保护?

0 回复 有任何疑惑可以回复我~
Dell 2020-06-20 16:42:22

不要用 {} ,请使用interface

0 回复 有任何疑惑可以回复我~
  • 提问者 哈士奇附体 #1
    /* 泛型generic 泛指的类型 */
    interface numberType {
      count: number
    };
    type stringType = string;
    function a<T, P>(first: T, second: P) {
      return `${first}${second}`
    }
    const b = {count:123}
    a<numberType, stringType>(b, '3521')这样么?也不行呢
    回复 有任何疑惑可以回复我~ 2020-06-23 06:27:26
  • Dell 回复 提问者 哈士奇附体 #2
    a(b, '3521') 这样可以是吧
    回复 有任何疑惑可以回复我~ 2020-06-25 21:30:18
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信