如何使用HTML输入值构造TypeScript对象?

时间:2015-08-10 14:35:12

标签: typescript

这应该是非常基本的,但我无法完成它。

我有一个类:

    var value = document.getElementById("myValue");
    var unit = document.getElementById("myUnit"); 
    myObject: MyObject = new MyObject(value, unit);

然后在HTML中,

{{1}}

我想创建一个" MyObject"的对象。使用myValue和myUnit的类。我该怎么做?

类似的东西:

{{1}}

无法以上述方式执行此操作。这是怎么回事?

3 个答案:

答案 0 :(得分:15)

以下是适用于TypeScript的最终答案(将HTMLElement转换为HTMLInputElement的参考:The property 'value' does not exist on value of type 'HTMLElement'

var value = parseFloat((<HTMLInputElement>document.getElementById("myValue")).value);
var unit = (<HTMLInputElement>document.getElementById("myUnit")).value; 
myObject: MyObject = new MyObject(value, unit);

将HTMLElement强制转换为HTMLInputElement非常重要,否则TypeScript中的HTMLElement不存在“value”属性,TypeScript编译器将显示错误。

答案 1 :(得分:4)

let value : number = parseFloat((<HTMLInputElement>document.getElementById("myValue")).value);
let unit : string = (<HTMLInputElement>document.getElementById("myUnit")).value; 

myObject: MyObject = new MyObject(value, unit);

它也可以这样写:

let value : number = parseFloat((document.getElementById("myValue") as HTMLInputElement).value);
let unit : string = (document.getElementById("myUnit") as HTMLInputElement).value; 

myObject: MyObject = new MyObject(value, unit);

请注意,我没有使用 var ,而是,这样可以更好地控制代码。

注意:使用作为或通过&lt;&gt; 直接投射取决于您。我个人不知道打字稿,知道具体的区别。我的猜测是使用'as'就像C#一样进行额外检查,但如果它不是HTMLInputElement,它如何进行错误处理,我不知道。 (也许有人可以对此发表评论)。

在打字稿教程中,他们也使用“as”:http://www.typescriptlang.org/docs/handbook/asp-net-4.html

答案 2 :(得分:1)

更改:

var value = document.getElementById("myValue");
var unit = document.getElementById("myUnit"); 
myObject: MyObject = new MyObject(value, unit);

致:

var value = parseFloat(document.getElementById("myValue").value);
var unit = parseFloat(document.getElementById("myUnit").value); 
myObject: MyObject = new MyObject(value, unit);