javascript - 如何在 typescript 中使用表单元素

标签 javascript casting typescript

我想通过 myForm.elements 访问表单元素,然后通过名称访问每个元素,例如 myForm.elements.month。 Typescript 不喜欢这个 b/c 它不知道 form.elements 包含 month 的属性。我想,让我们创建一个界面吧!所以我做了,(见下面的代码),但我收到了这个 typescript 错误: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 对象以便 typescript 不会提示的任何想法?

最佳答案

最好的方法是这样写:

// Note 'extends' clause here
interface FormElements extends HTMLFormElement {
    day: HTMLInputElement;
    month: HTMLInputElement;
    year: HTMLInputElement;
}

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

关于javascript - 如何在 typescript 中使用表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29907163/

相关文章:

javascript - focus() 无需滚动即可输入

javascript - 谷歌加网络身份验证

java - 动态比较java中的类型

angular - <ng-容器> 与 <模板>

javascript - 在单文件组件中使用 Vue.js 插件

Javascript-锁定字符串以防止其他方法更改它

c++ - 在 C++ 中将字符串转换为 unsigned long long

sql - 为什么更新触发器在 SQL Server 中进行舍入?

angularjs - WebPack 中的 Typescript(加载程序)编译器错误

Angular 13 Prerender 错误找不到主包