我正在使用TypeScript在Angular 2中开发一个小应用程序,但我遇到了一个问题。
假设我将变量num
声明为数字,并且我使用ngModel
将其绑定到表单中的输入框。当我得到值,并检查类型时,它实际上现在是一个字符串,而不再是一个数字,所以当检查num >= 0
时,如果输入包含它,它实际上会返回true
由于JavaScript行为正常而导致空字符串。
现在这是TypeScript中的一个错误,还是有某种方法可以获得正确的数据类型?我希望他们在幕后做适当的强制,所以我不必这样做。
编辑:plunk here
答案 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。