我已经定义了一个这样的接口:
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"
是否可以使用接口来描述我的模态对象,如果是这样,我应该如何创建它?
下面是另一种方法:
你可以像这样简单地创建一个ESLint友好的对象
const modal: IModal = {} as IModal;
或者基于接口的默认实例,如果有默认值的话
const defaultModal: IModal = {
content: "",
form: "",
href: "",
$form: {} as JQuery,
$message: {} as JQuery,
$modal: {} as JQuery,
$submits: {} as JQuery
};
然后通过重写一些属性来改变默认实例
const confirmationModal: IModal = {
...defaultModal, // all properties/values from defaultModal
form: "confirmForm" // override form only
}
这里是我经常使用的另一个解决方案。但是我不确定这是否是好的做法,如果不是,请在下面评论。
/// Interface
export default interface BookInterface {
title: string,
author: string,
id: any
}
/// Creating Class
export class BookClass implements BookInterface {
title: string;
author: string;
id: any;
constructor(title: string, author: string, id: any) {
this.title = title;
this.author = author;
this.id = id;
}
}
/// How to use it
let book: BookInterface = new BookClass(title, author, id);
谢谢:)
下面是另一种方法:
你可以像这样简单地创建一个ESLint友好的对象
const modal: IModal = {} as IModal;
或者基于接口的默认实例,如果有默认值的话
const defaultModal: IModal = {
content: "",
form: "",
href: "",
$form: {} as JQuery,
$message: {} as JQuery,
$modal: {} as JQuery,
$submits: {} as JQuery
};
然后通过重写一些属性来改变默认实例
const confirmationModal: IModal = {
...defaultModal, // all properties/values from defaultModal
form: "confirmForm" // override form only
}