#typescript
Вопрос:
Скажем, у меня есть объект, подобный приведенному ниже:
const console = {
write(text: string) {
/* logic */
return this;
},
writeLine(text: string) {
/* logic */
return this;
}
};
Каким должен быть возвращаемый тип методов write и WriteLine здесь?
Я знаю, что мы можем определить интерфейс и установить его в качестве возвращаемого типа, но есть ли какой-либо другой способ установить тип, который ссылается на объект?
Комментарии:
1. вам не нужно явно объявлять возвращаемый тип. TS способен сделать это вывод. Если вы хотите, вы можете использовать
write(text: string): typeof this
2. @captain-yossarian вы правы, но ESLint показывает это как предупреждение. Хотя мы можем отключить это правило, но хотим знать, есть ли какой-либо другой явный способ определения возвращаемого типа в этом сценарии.
Ответ №1:
Вы можете явно определить возвращаемый тип таким образом:
const _console = {
write(text: string): typeof this {
/* logic */
return this;
},
writeLine(text: string): typeof this {
/* logic */
return this;
}
};
Или вы можете определить свой console
как класс и просто использовать this
:
class Console {
write(text: string): this {
/* logic */
return this;
}
writeLine(text: string): this {
/* logic */
return this;
}
};
Я надеюсь, что это сделает ESLint счастливым: D
Комментарии:
1. Я не могу использовать a
class
в своем коде. Как вы предположили, мы можем использоватьtypeof
оператор типа. Например.typeof console
Спасибо.