анус себе забань пес
опционально. разницу понимаете?
В TypeScript типизация тоже опциональная. Я вам уже писал
Вы TypeScript вообще смотрели? Может прежде чем критиковать что то было бы неплохо с ним познакомится?
Вы же пишите
Вы сами рассказываете об каком-то уродском программировании, которое обязано быть на дин ЯП, но от которого якобы избавляет статическая типизация.
Мои, да.
И где в них — орден себе?
Вы и другие троли пришли в топик «TypeScript — это не только про аннотацию типов. Примеры из практики» и рассказываете что TS не нужен. Это как раз
сноб себе орден на грудь поцепил, создал соломенное чучело с другого мнения
TS нужен. Это вы не нужны в этом топике.
Ну, если каждый создаст свой тип
MyMan, FooMan, VasyaMan, ExtendedMan, DBMan, с разным набором полей и реализацей методов — то что вы скажете? Все понятно будет?
TypeScript вас не обязывает так делать. Это вы уже сами наклепали.
Но вот в дин ЯП конечно так и делают, аха. идиёты конечно, кретины. а как же ж, разве может пыхер называться программистом?
В PHP, Ruby, Python добавили статическую типизацию. Вот идиоты.
Но вот в дин ЯП конечно так и делают, аха. идиёты конечно, кретины. а как же ж, разве может пыхер называться программистом?
а жабоскриптер? а на Clojure — разве могут код писать — Настоящие Программисты?!
я бы может и обиделся за коллег на дин ЯП :)
Вы сами это придумали и сами чуть не обиделись)
а так, «ясно, понятно» — сноб себе орден на грудь поцепил, создал соломенное чучело с другого мнения — и давай примеры приводить :
Это как раз вас описывает. Ваши слова:
Тренды в программерской тусовке ничуть не рациональней чем в парижской моде.
написал о пустопорожности надежд что типизация чего-то там существенного позволяет выловить.
это для тех для кого он авторитет — молодежи, которая изучала джс по ютьюбу, и открыла рот от изумления увидев первый в своей жизни ЯП с статической типизацией
ну ок, тогда так и запишем
типизация придумана с целью быстрой, корректной работы IDE
Ваши слова. Не мои.
Я писал
он щелкнет в IDE на тип и перейдет к его определению
Если Вы тип не пишите Вы никуда не щелкните и никуда не перейдете. У вас типов нет. Вместо
listOfPeople: List<People>У вас коментарий
listOfPeople - list of people.Вы не можете щелкнуть на People и перейти к его определению.
Вы часто приписываете другим слова которых они не говорили.
как обычно — откроет исходный код или доку
или его типизация избавит от этого?
Как минимум он щелкнет в IDE на тип и перейдет к его определению, а не будет грепать весь проект.
он думает о свойствах конкретного объекта, а не его типе
он думает — о выводе name например, а не о том что это name у типа Товар, или типа Man
Это называется структурная типизация. Вы TypeScript вообще смотрели? Может прежде чем критиковать что то было бы неплохо с ним познакомится? Вероятно ваши рассуждения о типах строятся на Java или чем-то подобном. В TypeScript система типов намного мощнее и удобнее.
function lysakPrint(obj: { name: string }) {
console.log(obj.name);
}
Уже по сигнатуре функции Вы видите что `lysakPrint` работает с любыми объектами у которых есть name.и почему тесты — не могут отловить этот класс ошибок, если они есть, тесты?
Вы часто приписываете другим слова которых они не говорили. Может выявить. Только Вы вместо написания типа пишете лишний тест которого бы не было если бы Вы написали тип.
то есть вы утверждаете, что причиной того что тестов нет и документации нет — отсутствие типизации?
Это Вы такое утверждаете.
Но с типизацией читающий код хотя бы будет понимать что требуется заинжектить.
Если Вы и так пишете эту информацию почему бы это не сделать в типах?
линтер может избавить от необходимости использовать типизаци
Сами придумали и сами посмеялись. Типизация и линтер инструмент для того что бы сделать код лучше. Если использующий их дурак то и результат соответсвующий.
верно, зачем снабжать типом 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);
}
иди кукарекай в другой двор