请稍等 ...
×

采纳答案成功!

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

那个蜜蜂的例子有问题

class BeeKeeper {
  hasMask: boolean;
}

class ZooKeeper {
  nametag: string;
}

class Animal {
  numLegs: number;
}

class Bee extends Animal {
  keeper: BeeKeeper;
}

class Lion extends Animal {
  keeper: ZooKeeper;
}

function createInstance<A extends Animal>(c: new () => A): A {
  return new c();
}

var ss = createInstance(Lion).keeper.nametag;  // typechecks!
var ss1 = createInstance(Bee).keeper.hasMask;   // typechecks!

console.log(ss, ss1)

其实是读不到那个属性的。。。。那个属性是类的静态属性

正在回答

2回答

ustbhuangyi 2019-06-10 21:01:28

你说的是读不到哪个属性?

0 回复 有任何疑惑可以回复我~
  • 提问者 旋涡鸣人_ #1
    hasMask
    
    nametag
    回复 有任何疑惑可以回复我~ 2019-06-11 08:42:39
  • ustbhuangyi 回复 提问者 旋涡鸣人_ #2
    这个示例是演示编译时的类型检查,hasMask nametag 都是在类中声明并没有实现,如果你说的运行时那确实访问不到,不仅如此,连 keeper 都访问不到。
    hasMask nametag 都是实例属性并不是静态属性。
    回复 有任何疑惑可以回复我~ 2019-06-11 09:49:42
  • 提问者 旋涡鸣人_ #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-06-11 14:31:06
慕莱坞0998854 2019-06-29 16:51:55

这个代码编译没有问题啊?

0 回复 有任何疑惑可以回复我~
  • 编译没问题,说的是运行时的问题
    回复 有任何疑惑可以回复我~ 2019-06-29 18:18:51
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信