Преобразование старых классов JavaScript в TypeScriptJavascript

Форум по Javascript
Anonymous
Преобразование старых классов JavaScript в TypeScript

Сообщение Anonymous »

В настоящее время я конвертирую старое приложение JavaScript в TypeScript и не знаю, как лучше это сделать.
Существует серверный Rest API, который выглядит следующим образом:

Код: Выделить всё

[
{"first_name": "John", "last_name": "Doe"},
...
]
И еще у меня есть такой базовый класс JavaScript:

Код: Выделить всё

class BaseData  {
constructor(data) {
data = data || {};
Object.keys(data).forEach(k => {
let key = snakeToCamel(k);    // snakeToCamel is a util function
let value = data[k];
this[key] = value;
});
}
}
И классы моделей, подобные этому:

Код: Выделить всё

class Person extends BaseData {
constructor(data) {
super(data);
}

getFullName() {
return `${this.firstName} ${this.lastName}`;
}
}
Тогда я мог бы использовать это так:

Код: Выделить всё

const person = new Person(data); // `data` is from the API
console.log(persion.firstName)
Это очень хорошо работает в JavaScript, но затем для преобразования в TypeScript мне нужно написать много шаблонного кода инициализатора:

Код: Выделить всё

class Person {
firstName: string;
lastName: string;
// etc

constructor(data: Record) {
this.firstName = data.first_name;
this.lastName = data.last_name;
// etc
}
}
Вместо этого я могу использовать интерфейс и избегать инициализаторов, но как тогда преобразовать поля json Snake_case в переменные верблюжьего регистра? А как насчет таких методов, как getFullName()?
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/798 ... typescript

Вернуться в «Javascript»