打字稿声明的类型不被尊重

时间:2018-11-14 15:40:50

标签: typescript

我是Typescript的新手,所以这可能是一个愚蠢的问题。
我有一个功能,例如:

result code 12 - Error: Declined.

我注意到该函数能够接收非interface MyType { myField: string myOtherField: string } const myFunction = (input: MyType) => { ... } 的值,例如我见过MyType甚至是MyType[]之类的值。

现在,可能发生这种情况是因为Typescript只是输出Java代码,而根本不了解类型。

有没有一种方法可以执行类型检查并在发生这种不匹配的情况下抛出string

编辑:供以后参考,请参见https://github.com/fabiandev/ts-runtime

1 个答案:

答案 0 :(得分:1)

类型由TypeScript编译器检查,并在编译期间删除。

在TypeScript中工作时,您将获得所有期望的检查:

interface MyType {
   myField: string
   myOtherField: string
}

const myFunction = (input: MyType) => {
    return input.myField;
};

// OK
myFunction({ myField: '', myOtherField: '' });

// NOT OK
myFunction([{ myField: '', myOtherField: '' }]);

但是,如果您在运行时从另一个JavaScript文件中调用已转译的JavaScript,则不会进行类型检查。 运行时的类型检查不是TypeScript的功能

TS * /更安全的TypeScript

有一个创建runtime type safe compiler for TypeScript的简短计划,但是并没有引起人们的注意,并且自2014年以来就没有进行过更新。