Но с типизацией читающий код хотя бы будет понимать что требуется заинжектить.
Если Вы и так пишете эту информацию почему бы это не сделать в типах?
линтер может избавить от необходимости использовать типизаци
Сами придумали и сами посмеялись. Типизация и линтер инструмент для того что бы сделать код лучше. Если использующий их дурак то и результат соответсвующий.
верно, зачем снабжать типом ListOfPeople аргумент с названием listOfPeople
Вы не поверите но типы можно комбинировать
People[], List<People>
не делайте этой тупой работы. Я же не делаю :)
И как читающий ваш код поймет что нужно передать в listOfPeople? И комментария
listOfPeople - list of people?
А по факту — тестов нет, документации нет никакой, а типизация применяется для типизации.
Даже так лучше чем «тестов нет, документации нет никакой, типизации нет».
Как минимум в хорошо типизированном проекте намного проще проводить рефакторинг, а это уже большая помощь для того что бы «прекрасный белый лебедь» не превратился в «комок грязи» в будущем.
Человек который не использует TypeScript все равно думает о типах. Что должна принимать функция которою я хочу написать? Что должна возвращать? Почему бы не закрепить эту информацию в коде, а не в комментариях (если их пишут в этом проекте, очень частно не пишут)? Что бы она не потерялась и что бы компилятор помогал находить ошибки.
не способствует. Богоклассы, с десятком параметров в конструкторе, и еще десятком инжекций — вполне пишутся и с типизацией
Вполне пишутся и без типизации тоже. Но с типизацией читающий код хотя бы будет понимать что требуется заинжектить.
Не использовать типизацию это как не использовать линтер. Хороший код можно писать и без линтера и без типизации. Но делать это намного сложнее. Зачем делать тупую работу если это за тебя может сделать линтер и компилятор?
Строя большую систему Вы конечно можете сделать один большой кусок кода в котором все взаимодействует со всем. Но лучше разбить систему на маленькие изолированные кусочки и выстроить связи между этими кусочками. Что бы правильно это сделать нужно хорошо понимать что можно подать в каждый кусочек и что можно из него получить. А теперь расскажите мне что типизация этому никак не способствует.
Большая система без типов довольно быстро превращается даже не в лапшу, а в большой комок грязи. Есть конечно исключения. Но они довольно редки.
Я не осилил TypeScript. Поэтому TypeScript говно. Буду и дальше писать лапшу на JS без типов. Что бы хрен кто догадался что вообще происходит в коде.
return new Proise(r => ’и че?’);
у Вас вызов `r` потерялся.
const X = class X {
constructor() {
return new Promise(r => r('и че?'));
}
} as { new(): Promise<string> }
async function main() {
const v = await new X()
console.log(v.length);
}
main()
Компилируется и выполняется. И знает что у v тип string.В ts тоже можно из конструктора любое че-хоч вернуть. Только зачем?
будет что? — Object
в js тоже будет обжект
И че? JS
class X {
async constructor() {}
}
VM110:2 Uncaught SyntaxError: Class constructor may not be an async method
Надеюсь Вы не говорите своим студентам что нельзя использовать TS потому что он не поддерживает асинхронные конструкторы? JS тоже не поддерживает.Поддерживает.
const ShemsedinovConnection = function (host: string, port: number) {
return Promise.resolve({ host, port, comment: 'Nakhuya?' })
} as {} as { new(host: string, port: number): Promise<{ host: string, port: number }> }
async function main() {
const connection = await new ShemsedinovConnection('host', 123);
console.log(connection);
}
const ShemsedinovConnection = function (host: string, port: number) {
return Promise.resolve({ host, port, comment: 'Nakhuya?' })
} as {} as { new(host: string, port: number): Promise<{ host: string, port: number }> }
async function main() {
const connection = await new ShemsedinovConnection('host', 123);
console.log(connection);
}
Особисто я не розумію, що завадило (чи заважає зараз, чи в майбутньому) в саме ядро JS додати цілий тип даних із довільною кількістю знаків.
Это Вы такое утверждаете.