如何获得提取变量的智能感知?
How to get intellisense for extracted variables?
问题
我正在尝试在编辑该对象时重构 visual-studio-code by extracting an argument of a function to a global constant. However, once I do this I lose the ability to use intellisense 中的一些代码!
一些例子
我真的想要这个功能与我不熟悉的工具和库一起使用,但为了简单起见,我在下面做了一个简单的例子来演示我所指的内容。
智能感知示例
提取的对象没有智能感知的示例
测试示例
/**
* Example to test intellisense
* @param {Object} person
* @param {string} person.first
* @param {string} person.last
*/
function sayName(person) {
console.log(person.first, person.last);
}
// Intellisense works here!
sayName({first: "Robert", last: "Todar"});
// Intellisense doesn't work here.. ☹
const person = {
first: "Robert",
last: "Todar"
}
sayName(person);
问题
当我从函数中提取参数时,是否有任何方式获得智能感知?
我相信您需要在每个新对象的 顶部使用 @typedef that will act like a Global Definition
then, you'll need to add @type or @param |函数.
语法如下所示:
/**
* @typedef {object} person creates a new type 'object' named 'person'
* @property {string} first - a 'string' property of 'person'
* @property {string} last - a another 'string' property of 'person'
* @property {number} [age] - an optional 'number' property of 'person'
*/
对于 Functions 添加 /** @param {person} name */
这将告诉 IntelliSense name 参数指的是人对象 属性。 (@arg
、@argument
也有效)
/** @param {person} name */
function sayName(name) {
// IntelliSense works here
console.log(name.first, name.last)
}
// and here too
sayName({})
至于 Objects: 添加 /** @type person */
这将告诉 IntelliSense john 对象与 相同人物 对象
/** @type person */
const john = {}
问题
我正在尝试在编辑该对象时重构 visual-studio-code by extracting an argument of a function to a global constant. However, once I do this I lose the ability to use intellisense 中的一些代码!
一些例子
我真的想要这个功能与我不熟悉的工具和库一起使用,但为了简单起见,我在下面做了一个简单的例子来演示我所指的内容。
智能感知示例
提取的对象没有智能感知的示例
测试示例
/**
* Example to test intellisense
* @param {Object} person
* @param {string} person.first
* @param {string} person.last
*/
function sayName(person) {
console.log(person.first, person.last);
}
// Intellisense works here!
sayName({first: "Robert", last: "Todar"});
// Intellisense doesn't work here.. ☹
const person = {
first: "Robert",
last: "Todar"
}
sayName(person);
问题
当我从函数中提取参数时,是否有任何方式获得智能感知?
我相信您需要在每个新对象的 顶部使用 @typedef that will act like a Global Definition
then, you'll need to add @type or @param |函数.
语法如下所示:
/**
* @typedef {object} person creates a new type 'object' named 'person'
* @property {string} first - a 'string' property of 'person'
* @property {string} last - a another 'string' property of 'person'
* @property {number} [age] - an optional 'number' property of 'person'
*/
对于 Functions 添加 /** @param {person} name */
这将告诉 IntelliSense name 参数指的是人对象 属性。 (@arg
、@argument
也有效)
/** @param {person} name */
function sayName(name) {
// IntelliSense works here
console.log(name.first, name.last)
}
// and here too
sayName({})
至于 Objects: 添加 /** @type person */
这将告诉 IntelliSense john 对象与 相同人物 对象
/** @type person */
const john = {}