如何在*.d.ts文件中声明包含两种不同类型的Iterable?
问题
我有如下JavaScript函数,希望让VSCode对其返回对象显示自动补全提示,但未能成功:
const profile = (form, validation) => Object.defineProperties( { form, validation }, { 0: { value: form }, 1: { value: validation }, length: { value: 2 }, [Symbol.iterator]: { value: Array.prototype[Symbol.iterator] }, [Symbol.toStringTag]: { value: 'ValidationProfile' }, }, );
我尝试为返回对象编写了如下*.d.ts类型定义,但显然存在错误:
import { Validation } from './validation'; export type ValidationProfile = typeof ValidationProfileAPI; // !!! 返回的不是数组,只是想试着让它能生效 const ValidationProfileAPI: [HTMLFormElement, Validation]; declare namespace ValidationProfileAPI { let form: HTMLFormElement; let validation: Validation; interface iterator implements Iterable<HTMLFormElement|Validation> {} }
我找到过一个类似问题,但不知道怎么适配到我的场景,恳请提供建议。
可行解决方案(更新)
以下是最终可用的实现方案,基于支持数组解构的TypeScript接口方案:
import { Validation } from './validation'; export interface ValidationProfile extends Iterable<HTMLFormElement | Validation> { form: HTMLFormElement; validation: Validation; [0]: HTMLFormElement; [1]: Validation; }
内容的提问来源于stack exchange,提问作者Alexandr Kalabin
相关产品推荐
相关产品推荐

