使用TypeScript从表单输入中获取值

时间:2017-03-02 04:10:51

标签: javascript angular typescript

我正在使用TypeScript在Angular 2中开发一个小应用程序,但我遇到了一个问题。

假设我将变量num声明为数字,并且我使用ngModel将其绑定到表单中的输入框。当我得到值,并检查类型时,它实际上现在是一个字符串,而不再是一个数字,所以当检查num >= 0时,如果输入包含它,它实际上会返回true由于JavaScript行为正常而导致空字符串。

现在这是TypeScript中的一个错误,还是有某种方法可以获得正确的数据类型?我希望他们在幕后做适当的强制,所以我不必这样做。

编辑plunk here

2 个答案:

答案 0 :(得分:2)

这不是TypeScript中的错误,这是正确的行为。

如果您宣布您的输入

#include <algorithm> class test { //... test(test const& other) : pir{ new pair() } { pir->a = other.pir->a; pir->b = other.pir->b; } test& operator=(test const& other) { test copy(other); swap(*this, copy); return *this; } test(test&& other) noexcept : pir{ nullptr } { swap(*this, other); } test& operator=(test&& other) noexcept { swap(*this, other); return *this; } friend void swap(test& lhs, test& rhs) { std::swap(lhs.pir, rhs.pir); } };

请参阅 type =&#34; number&#34; 然后它将是一个数字。

是的,我没有向你投票:p

答案 1 :(得分:1)

试着添加一些解释:

在浏览器中不存在Typescript - 它没有类型强制,没有类型检查没有任何东西。 payment变量的类型由输入类型和Angular确定(如Hung Cao所解释)。

Typescript只能通过检查你的类型来帮助你在编辑器和javascript编译阶段。

如果使用TS创建库并声明:

const myVariable: SomeClassOfMine;

然后我在不同的项目中使用它,我可以这样做:

myVariable = 1;

并且没有警告/错误。事实上,浏览器没有您的SomeClassOfMine类型的知识

请记住,浏览器(或节点)中不存在TS,它仍然是JS。