2017-09-30 9 views

답변

3

정말 좋은 질문입니다. 오늘은 모든 클래스 인스턴스 변수를 생성자에 선언하고 각 클래스 인스턴스 변수에 예상되는 유형을 주석으로 추가합니다. 좋은 실행이고 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의 것으로 몇 가지 변수를 선언하고 자동 완성 즐길 :

auto-completion

을 그리고 당신은 당신의 재산의 일부 잘못된 유형을 지정하려는 경우 :

enter image description here


그러나 때때로 클래스를 선언 할 필요조차 없습니다. 예를 들어, 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이 두 접근법을 모두 잘 이해할 수 있는지 확인하십시오.