我已经定义了一个这样的接口:
interface IModal { content: string; form: string; href: string; $form: JQuery; $message: JQuery; $modal: JQuery; $submits: JQuery; }
我定义了一个这样的变量:
var modal: IModal;
但是,当我尝试设置 modal 的属性时,它会给我一条消息说
"cannot set property content of undefined"
是否可以使用接口来描述我的模态对象,如果可以,我应该如何创建它?
如果你在别处创建“modal”变量,并且想告诉 TypeScript 这一切都会完成,你可以使用:
declare const modal: IModal;
如果你想在 TypeScript 中创建一个实际上是 IModal 实例的变量,你需要完全定义它。
const modal: IModal = { content: '', form: '', href: '', $form: null, $message: null, $modal: null, $submits: null };
或者撒谎,使用类型断言,但您将失去类型安全性,因为您现在将在意想不到的地方得到未定义,并且可能在访问时出现运行时错误modal.content等等(合同规定的属性将在那里)。
modal.content
const modal = {} as IModal;
示例类
class Modal implements IModal { content: string; form: string; href: string; $form: JQuery; $message: JQuery; $modal: JQuery; $submits: JQuery; } const modal = new Modal();
你可能会想“嘿,这真的是界面的重复”——你是对的。如果 Modal 类是 IModal 接口的唯一实现,您可能希望完全删除该接口并使用…
const modal: Modal = new Modal();
而不是
const modal: IModal = new Modal();