typescript - השתמש בטייפינגס עבור מחלקת ES6 בתוך המחלקה עצמה


יש לי מחלקת ES6 קיימת ClassA.js כזו:

module.exports = class A {
  test(param) {
    console.log(param)
  }

  test2(param) {
    this.test() // no warning here
  }
}

גם יש לי קובץ הקלדות ClassA.d.ts

export type A = {
  test(param: string): void
  test2(param: string): void
}

גם יש לי index.js

const A = require('./ClassA');

const a = new A();
a.test(1);

זו, כצפוי, נותנת שגיאת קומפיילר בשימוש ב-WebStorm מכיוון ש-test מצפה ל-string.

עם זאת אני לא מקבל אזהרה עבור this.test() בתוך ClassA.js שחסר לה הפרמטר. גם אם קוראים ל- this.(1) זה לא נותן אזהרה.

האם יש דרך לקבל גם אזהרות בתוך המחלקה עצמה? וגם האם אני יכול להשתמש ב-tsc כדי לכלול את ClassA.js ולקבל אזהרת קומפילציה עבור מחלקה שגויה ב-index.js וגם בתוך ClassA.js?

תשובה #1

הקבצים מסוג Typings אינם מיועדים לשימוש לבדיקה סטטית של הספריות עצמן, אי אפשר לגרום ל-IDE (או לקומפיילר tsc) להשתמש בהם למטרה זו. אני מציע להשתמש במקום זאת בהערות JSDoc, כמו:

module.exports = class A {
    /**
     * @param {string} param
     */
    test(param) {
        console.log(param)
    }
    /**
     * @param {string} param
     */
    test2(param) {
        this.test() // no warning here
    }
}