저는 간단한 ES6 클래스를 가지고 있으며이를 JSDoc에서 올바르게 설명하는 방법을 알고 싶습니다. 내 자신의 유형을 정의하고 싶습니다. 나중에 WebStorm 자동 완성으로 인식됩니다.JSDoc에서 고유 한 클래스 유형을 올바르게 정의하는 방법은 무엇입니까?
아래의 예는 유효합니까?
/**
* @typedef {Object} View
* @class
*/
class View{...}
저는 간단한 ES6 클래스를 가지고 있으며이를 JSDoc에서 올바르게 설명하는 방법을 알고 싶습니다. 내 자신의 유형을 정의하고 싶습니다. 나중에 WebStorm 자동 완성으로 인식됩니다.JSDoc에서 고유 한 클래스 유형을 올바르게 정의하는 방법은 무엇입니까?
아래의 예는 유효합니까?
/**
* @typedef {Object} View
* @class
*/
class View{...}
정말 좋은 질문입니다. 오늘은 모든 클래스 인스턴스 변수를 생성자에 선언하고 각 클래스 인스턴스 변수에 예상되는 유형을 주석으로 추가합니다. 좋은 실행이고 Webstorm으로 잘 작동합니다. 예를 들어 :
class MyClass {
constructor() {
/** @type {Number} some number value */
this.someNumber = 0;
/** @type {String} some relevant string */
this.someString = null;
/** @type {Map<Number, Set<String>>} map numbers to sets of strings */
this.strSetByNumber = new Map();
}
/**
* Some sample function.
*
* @param {Number} a - first value
* @param {Number} b - second value
* @return {Number} the resulting operation
*/
someFunction(a, b) {
return a + b;
}
}
이제 단지 형 MyClass
의 것으로 몇 가지 변수를 선언하고 자동 완성 즐길 :
을 그리고 당신은 당신의 재산의 일부 잘못된 유형을 지정하려는 경우 :
그러나 때때로 클래스를 선언 할 필요조차 없습니다. 예를 들어, isntance에 대해 JSON을 통해 객체를받을 것으로 예상하고 그 객체와 함께해야합니다. 순수한 JSDoc을 사용하여 클래스를 선언 할 필요없이 코드를 확인할 수 있습니다. 이 같은 JSON 기다리고있어 말 :
{
"foo": "bar",
"fizz": 42
}
를 대신 클래스를 선언하는 대신 코드에서 어떤 장소에서 이렇게 (I 사용을 만들려고 스크립트의 상단에 항상 넣어 선호 그것의) :
/**
* @typdedef {Object} MyType
* @property {String} foo - this is some cool string
* @property {Number} fizz - some number we also expect to receive
*/
그리고 그게 다야! 직접 시도해보고 Webstorm이 두 접근법을 모두 잘 이해할 수 있는지 확인하십시오.