- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
type User = {
status: 'lamer' | 'junior' | 'govnokoder';
login: string;
iq: number;
}
type ChangeListener<T, K extends keyof T> = {
name: `${K & string}_Listener`;
on(newValue: T[K])
}
const UserIqListener: ChangeListener<User, 'iq'> = {
name: "iq_Listener", //ничто другое не скомпилируется
on(event: number) { //понятно, что string тут не скомпилируется
}
}
const UserStatusListener: ChangeListener<User, 'status'> = {
name: "status_Listener",
on(newValue: User["status"]) {
switch (newValue) {
case "govnokoder": { //понятно, что неверный тип тут не скомпилируется
}
}
}
}
MAKAKA 11.04.2021 04:44 # 0
j123123 11.04.2021 04:54 # 0
booratihno 11.04.2021 05:06 # 0
TS компилируется в JS
Сишка тоже во что-то компилируется, можно даже в JS
Однако сишка есть, а TS нету
j123123 11.04.2021 05:15 # 0
Можно тогда еще заводить по отдельному языку для всяких вариаций крестопараши, типа С++98, C++11, GNU C++98, GNU C++11, С++98 с буустом, C++98 с хуюстом, С++11 с бустом, C++11 с хуюстом, всякие там вижуалстудиевские кресты и так далее
booratihno 11.04.2021 05:21 # +1
> типизационная надстройка
Какие-то не очень точные определения.
> Любой JS код является валидным кодом для TS.
Во-первых нет:
является валидным JS, но не валдиным TS.
Во-вторых код на сишке в большинстве случаев является валидным кодом для С++ и ObjC. Однако они у нас есть, почему?
gologub 11.04.2021 06:50 # +1
чтобы можно было нагугленный кот копипастить к себе
gologub 11.04.2021 10:44 # 0
j123123 11.04.2021 05:21 # 0
booratihno 11.04.2021 05:24 # +1
Кроме того в нем забавная структурая типизация, паттерн матчинг, годный вывод типов, и прочие нехарактерные для мейнстрим говна штуки
ну собссно в этом коде видн
bootcamp_dropout 11.04.2021 10:05 # 0
А ну
booratihno 11.04.2021 12:10 # 0
bootcamp_dropout 11.04.2021 12:22 # 0
guest6 11.04.2021 15:01 # 0
bootcamp_dropout 11.04.2021 16:48 # 0
booratihno 11.04.2021 17:07 # +1
почти патрнмтчнг
vistefan 12.04.2021 00:42 # 0
booratihno 12.04.2021 00:45 # 0
vistefan 12.04.2021 01:07 # 0
guest6 11.04.2021 11:12 # 0
JloJle4Ka 11.04.2021 11:15 # 0
guest6 11.04.2021 15:02 # +1
vistefan 11.04.2021 21:51 # 0
booratihno 11.04.2021 17:13 # +2
JloJle4Ka 11.04.2021 17:19 # 0
j123123 11.04.2021 20:43 # +1
guest6 11.04.2021 21:44 # 0
j123123 11.04.2021 21:58 # 0
bootcamp_dropout 11.04.2021 22:09 # 0
https://en.wikipedia.org/wiki/Glasgow_Haskell_Compiler
>The back end of the compiler transforms Core code into an internal representation of C--...
какой костылек )))
j123123 11.04.2021 22:17 # 0
bootcamp_dropout 11.04.2021 23:59 # 0
j123123 12.04.2021 00:29 # 0
booratihno 12.04.2021 00:46 # 0
Значит ли это, что C++ язык ненастоящий?
gologub 12.04.2021 01:05 # +1
bormand 12.04.2021 01:25 # 0
guest6 12.04.2021 01:28 # 0
PolinaAksenova 13.04.2021 05:58 # 0
Отвратительня. Снячала джаваскриптеры использовали строки в качестве enum'ов (ня в последнюю очередь потому, что стандартных и удобных enum'ов ня было), а теперь эту говнопрактику узаконили аж в типизации.
Fike 13.04.2021 11:40 # +2
И сразу дать конечным пользователям передавать _любую_ петушню для их нужд, просто игнорировать её в своей библиотеке - это збс. Хоть через десять лет для эдж-кейса эту библиотеку пользуй - она все равно костылей не потребует.
booratihno 13.04.2021 11:58 # 0