Предполагается, что вы используете Closure Compiler или, по крайней мере, вариант JSDoc, который совместим с:
Я предлагаю использовать новый синтаксис @typedef , похоже, работает вэтот пример .
/**
* @typedef {{
* first.last:string,
* age:number,
* }}
*/
var PersonObject;
/**
* @type {PersonObject}
*/
let personObject = {
"first.last": "John Doe", // optional
"age": 31
}
Обратите внимание, что когда вы меняете 'first.last' в любом месте, Closure будет выдавать предупреждение :
JSC_TYPE_MISMATCH: initializing variable
found : {age: number, firstzzzzz: string}
required: {age: number, first.last: string}
missing : [first.last]
mismatch: [] at line 14 character 19
let personObject = {