当对象中包含句点时,如何在JSDoc / VSCode中记录对象的属性?
例如:
/**
* @type {PersonObject}
*/
let personObject = {
"first.last": "John Doe", // optional
"age": 31
}
/**
* @typedef {Object} PersonObject
* @property {String} [first.last]
* @property {Number} age
*/
{ “ message”:“类型'{\” first.last \“:字符串; age:数字;}'不能分配给类型'PersonObject'。\ n对象文字只能指定已知的属性,而'\” first.last \“'在'PersonObject'类型中不存在。”, “ source”:“ ts”, }
答案 0 :(得分:0)
假设您使用的是Closure Compiler,或者至少使用兼容的JSDoc风格:
我建议使用new @typedef syntax似乎是work in this example。
/**
* @typedef {{
* first.last:string,
* age:number,
* }}
*/
var PersonObject;
/**
* @type {PersonObject}
*/
let personObject = {
"first.last": "John Doe", // optional
"age": 31
}
请注意,当您在任一位置更改“ first.last”时,Closure都会发出一个warning:
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 = {