【发布时间】:2016-02-13 14:49:37
【问题描述】:
我们正在使用 Angular 2 和 TypeScript 构建应用程序。我们尝试在可能的情况下静态检查类型。有没有办法检查模板中的类型?考虑以下片段:
<foo [data]="dataObj"></foo>
假设Foo 组件中的data 具有某种类型TData。但是,默认情况下,没有什么可以阻止我传递不符合TData 的dataObj。是否有 Angular 模板的 typescript 扩展可以验证这种情况下的类型?
【问题讨论】:
-
目前没有任何“插件”可以做到这一点(你需要打字稿)。 Angular2 确实付出了很多努力来让 IDE 可以访问他们的代码和模板,但这就是未来。
-
@gilamran 即使使用 TypeScript 我该怎么做?
-
想了想,也许解决方案是包装函数?类似
<foo [data]="typeCheck(expectedtype,dataObj)> </foo>"的东西,其中expectedtype 应该匹配[data]的类型。当然,这需要程序员方面付出更多的努力,但这是我现在能想到的唯一方法。我很快就会尝试这个,如果它有效,我会发布一个答案。 -
你不能在 Angular 2 模板表达式中使用 typeof 吗?只是一个想法
-
我知道这不是一个真正的“解决方案”,但是当您使用 AOT 编译时,您的模板会被编译到结果文件中,然后当这些 ngfactory TS 文件被转译时,将会发现任何打字稿错误。这与 JIT 编译不同,因为使用 JIT,模板编译发生在运行时,因此不涉及 Typescript 检查。当我第一次尝试使用 AOT 运行我的项目时,我发现各种以前未报告的类型错误和从模板访问的私有变量/方法。
标签: angular typescript angular2-template