Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TS文档提供的小型编译类型脚本代码崩溃_Javascript_Typescript_Web_Typescript2.0 - Fatal编程技术网

Javascript TS文档提供的小型编译类型脚本代码崩溃

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 {

我一直在遵循Typescript的手册,但脚本在您可以在此处找到的代码示例中崩溃:

有人能帮我解决这个问题吗

{
    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();
}