Импорт классов в TypeScript

У менять есть файл test.ts

В нем импортируется классы из файлов jsfile и tsfile

jsfile.js:

class MyClass {
    age
    myfunc(){
        console.log("someTestFunction = " + this.age)
    }
}
module.exports = {MyClass}


tsfile.ts:
export class MyClass2 {
    age:number
    myfunc():void{
        console.log("someTestFunction = " + this.age)
    }
}

test.ts:

import {MyClass} from "./jsfile"
import {MyClass2} from "./tsfile"

const obj1:MyClass = new MyClass()

const  obj2:MyClass2 = new MyClass2()

console.log(obj1)
console.log(obj2)

В выводе получаю следующий результат:

MyClass { age: undefined }
MyClass2 {}

Почему в классе, который был импортирован из js файла, переменная age есть, а в классе из ts ее вообще нет? почему в обоих классах нет метода?


Ответы (1 шт):

Автор решения: qwabra

Пример

Доки

https://www.typescriptlang.org/tsconfig/#useDefineForClassFields

Использовать определение для полей класса - useDefineForClassFields

Этот флаг используется как часть перехода на следующую стандартную версию полей класса. TypeScript представил поля классов за много лет до того, как он был ратифицирован в TC39. Последняя версия будущей спецификации отличается от реализации TypeScript во время выполнения, но с тем же синтаксисом.

Этот флаг переключает на предстоящее поведение среды выполнения ECMA.

Вы можете узнать больше о переходе в примечаниях к выпуску 3.7.

→ Ссылка