提问人:SrdjaNo1 提问时间:11/7/2022 更新时间:11/7/2022 访问量:34
如何使用带有 init 函数的 TypeScript 和 OLOO 模式键入“This”
How to type "This" using TypeScript and OLOO pattern with init function
问:
根据 OLOO 模式,我们需要函数。出于这个原因,我必须键入“This”并将其添加为函数的第一个参数。不幸的是,现在我在网上收到一个错误,说它缺少属性、 和 。init
Autocomplete.init()
input
url
listUI
overlay
interface This {
input: HTMLInputElement;
url: string;
listUI: HTMLElement;
overlay: HTMLElement;
wrapInput: () => void;
createUI: () => void;
}
const Autocomplete = {
wrapInput: function (this: This) {
let wrapper = document.createElement("div");
wrapper.classList.add("autocomplete-wrapper");
this.input.parentNode?.appendChild(wrapper);
wrapper.appendChild(this.input);
},
createUI: function (this: This) {
let listUI = document.createElement("ul");
listUI.classList.add("autocomplete-ui");
this.input.parentNode?.appendChild(listUI);
this.listUI = listUI;
let overlay = document.createElement("div");
overlay.classList.add("autocomplete-overlay");
overlay.style.width = `${this.input.clientWidth}px`;
this.input.parentNode?.appendChild(overlay);
this.overlay = overlay;
},
init: function (this: This) {
this.input = document.querySelector("input") as HTMLInputElement;
this.url = "/countries?matching=";
this.wrapInput();
this.createUI();
},
};
document.addEventListener("DOMContentLoaded", () => {
Autocomplete.init();
});
我不确定如何解决此问题,因为我需要键入“This”才能使其工作。否则,它会抛出一个没有输入等的错误。this
答: 暂无答案
下一个:是否可以隐藏属性?
评论