Javascript TS文档提供的小型编译类型脚本代码崩溃
我一直在遵循Typescript的手册,但脚本在您可以在此处找到的代码示例中崩溃: 有人能帮我解决这个问题吗Javascript TS文档提供的小型编译类型脚本代码崩溃,javascript,typescript,web,typescript2.0,Javascript,Typescript,Web,Typescript2.0,我一直在遵循Typescript的手册,但脚本在您可以在此处找到的代码示例中崩溃: 有人能帮我解决这个问题吗 { class BeeKeeper { hasMask: boolean; } class ZooKeeper { nametag: string; } class Animal { numLegs: number; } class Bee extends Animal {
{
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();
}
createInstance(Lion).keeper.nametag; // typechecks!
// createInstance(Lion).keeper.hasMask; // error!
createInstance(Bee).keeper.hasMask; // typechecks!
}
该示例旨在显示键入行为,而不是完全可运行的程序。您遇到的问题是由于类中未初始化
keeper
字段造成的。要使其运行,请尝试以下操作:
class Bee extends Animal {
keeper: BeeKeeper = new BeeKeeper();
}
class Lion extends Animal {
keeper: ZooKeeper = new ZooKeeper();
}
该示例旨在显示键入行为,而不是完全可运行的程序。您遇到的问题是由于类中未初始化
keeper
字段造成的。要使其运行,请尝试以下操作:
class Bee extends Animal {
keeper: BeeKeeper = new BeeKeeper();
}
class Lion extends Animal {
keeper: ZooKeeper = new ZooKeeper();
}
我看不到任何分配给
keeper
的内容,因此它的默认值为undefined
(或者根本不存在,在这种情况下,读取它的值也会得到undefined
)。因此,从<代码> >未定义< /代码>中读取NoMaGe<代码>并不奇怪,导致Error .@ T.J.Cuuldor,因此我应该将它视为TS的正常行为。代码依赖于正在初始化的非斜体属性。与TypeScript无关,它只是错误的/不完整的代码。我看不到任何分配给keeper
的地方,因此它的默认值为未定义的
(或者根本不存在,在这种情况下,读取它的值也会给你未定义的
)。因此,从<代码> >未定义< /代码>中读取NoMaGe<代码>并不奇怪,导致Error .@ T.J.Cuuldor,因此我应该将它视为TS的正常行为。代码依赖于正在初始化的非斜体属性。与TypeScript无关,它只是错误/不完整的代码。它起作用了。当然,没有任何初始化或构造函数调用,因此应该使用关键字new
It worked隐式初始化它。当然,没有任何初始化或构造函数调用,因此应该使用关键字new
class Bee extends Animal {
keeper: BeeKeeper = new BeeKeeper();
}
class Lion extends Animal {
keeper: ZooKeeper = new ZooKeeper();
}