Преобразование старых классов 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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