这应该是非常基本的,但我无法完成它。
我有一个类:
var value = document.getElementById("myValue");
var unit = document.getElementById("myUnit");
myObject: MyObject = new MyObject(value, unit);
然后在HTML中,
{{1}}
我想创建一个" MyObject"的对象。使用myValue和myUnit的类。我该怎么做?
类似的东西:
{{1}}
无法以上述方式执行此操作。这是怎么回事?
答案 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);