如何使用打字稿中的表单元素

时间:2015-04-27 22:35:13

标签: javascript casting typescript

我想通过myForm.elements访问表单元素,然后按名称访问每个元素,例如myForm.elements.month。打字稿不是这样的b / c它不知道form.elements包含month的属性。我想,让我们创建一个界面!所以我做了,(见下面的代码),但我得到这个打字稿错误:Neither type 'HTMLCollection' nor type 'FormElements' is assignable to the other

以下是与我合作的代码:

interface FormElements {
    day: HTMLInputElement;
    month: HTMLInputElement;
    year: HTMLInputElement;
}

class BirthdateInput {
    constructor(form: HTMLFormElement) {
        var elements: FormElements = <FormElements> form.elements; // error here

        this.day = elements.day;
        this.month = elements.month;
        this.year = elements.year;
    }
}

关于如何更好地投射我的form.elements对象的任何想法如此打字都不会抱怨?

2 个答案:

答案 0 :(得分:4)

最好的办法就是这样写:

if(xhr){
        xhr.onreadystatechange = showContent;
        xhr.open("GET", url_new_posts, true);
        xhr.send(null);
    }else{
        alert("Could not create XMLHttpRequest");
    }

答案 1 :(得分:2)

结果添加extends子句修复它:

interface FormElements extends HTMLCollection {
    day: HTMLInputElement;
    month: HTMLInputElement;
    year: HTMLInputElement;
}