我有一个 typedef 的 JSDoc 注释,如下所示,
/**
* Lorem ipsum dolor...
* @typedef {Object} NotificationOptions
* @property {boolean} foo - Property 1
* @property {boolean} bar - Property 2
*/
除了 foo 和 bar 之外,如何向对象添加任何其他属性? (属性可以是任何类型,因此类型灵活)
我有一个关于打字稿接口定义的示例,如下所示。我希望我的 JSDoc 与 TS 上的接口定义具有类似的效果。
export interface FooBar {
foo: boolean;
bar: boolean;
[key: string]: any;
}
我知道它是可选的,并且代码可以在没有 typedef 的情况下顺利运行。只是好奇,想要有一个干净、良好的代码。
谢谢!
啊哈!一直试图弄清楚这一点,我没有在其他地方看到它的记录,但这似乎可以解决问题:
/**
* Lorem ipsum dolor...
* @typedef {Object} PartialNotificationOptions
* @property {boolean} foo - Property 1
* @property {boolean} bar - Property 2
* @typedef {PartialNotificationsOptions & Omit<object,
* "foo", "bar"
* >} NotificationOptions
*/
我们允许该部分对象以及通用“对象”类型(可以是任何东西)中定义的任何键,但明确排除先前定义的键,以指示不允许对具有不同类型的这些键的任何引用。