Presentation - https://slides.com/buggy/deck-26cbbd
Slides - ./slides-deck-*.html
Video - https://www.youtube.com/watch?v=5j2GrY5HBoI
Article - https://habr.com/ru/post/492106/
Proposals:
- Exact types microsoft/TypeScript#12936
- Covariance and contravariance microsoft/TypeScript#10717
- DeepReadonly type microsoft/TypeScript#13923
Bonus:
- Readonly is assignable to mutable microsoft/TypeScript#13347 microsoft/TypeScript#6532 (comment)
Suggestions:
- Don’t mutate data (ReadOnlyArray, ReadOnly, DeepReadOnly) https://stackoverflow.com/a/55930310/5801495
Proposal:
- Support some non-structural (nominal) type matching microsoft/TypeScript#202
Suggestions:
- Opaque type for primitives, private fields for classes
Proposal:
- Checked exceptions: microsoft/TypeScript#13219
Suggestions:
- Either monad
Proposal:
- Pure modifier: microsoft/TypeScript#7770 (comment)
Suggestions:
- Don’t mutate data
Proposal:
- Option to include undefined in index signatures microsoft/TypeScript#13778
Suggestions:
- Option type https://en.wikipedia.org/wiki/Option_type
- Type Guard
- Overloading
- Interface + Class of same name (microsoft/TypeScript#9699)
-
"Typing the Untyped: Soundness in Gradual Type Systems" by Ben Weissmann https://www.youtube.com/watch?v=uJHD2xyv7xo
-
Илья Климов — «Строгий» JavaScript: типы против реальности https://youtu.be/etKOc80-cw0
-
Артём Кобзарь — Как и зачем я пишу свой статический типизатор https://www.youtube.com/watch?v=GIHrPm_YAIc
-
Вячеслав Шебанов — Системы типов в двух словах https://www.youtube.com/watch?v=nFtO6419A5k
-
Артём Кобзарь/Дмитрий Махнёв - (не|ну)жная монада Either на практике и в теории Обработка ошибок https://www.youtube.com/watch?v=S0cCjbWuvzk
-
Strict mode in TypeScript: описание флагов, примеры https://habr.com/ru/post/490970/
-
Common "Bugs" That Aren't Bugs https://github.com/microsoft/TypeScript/wiki/FAQ#why-do-my-derived-class-property-initializers-overwrite-values-set-in-the-base-class-constructor
-
Вариантность в программировании https://habr.com/ru/post/218753/
-
The Dart type system https://dart.dev/guides/language/sound-dart
-
A Note on Soundness https://www.typescriptlang.org/docs/handbook/type-compatibility.html#a-note-on-soundness
-
Totality checking http://docs.idris-lang.org/en/latest/tutorial/theorems.html#totality-checking
-
Type variance Ability to use subtype/supertype instead of the type https://flow.org/en/docs/lang/variance/ https://stackoverflow.com/a/48858344/5801495
-
Width Subtyping or Exact types https://flow.org/en/docs/lang/width-subtyping/
-
Session types in programming languages http://simonjf.com/2016/05/28/session-type-implementations.html
-
Proof assistant https://en.wikipedia.org/wiki/Proof_assistant
-
Homotopy type theory https://en.wikipedia.org/wiki/Homotopy_type_theory
-
Type theory https://en.wikipedia.org/wiki/Type_theory
-
Curry–Howard correspondence https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence
-
Hindley–Milner type system https://en.wikipedia.org/wiki/Hindley%E2%80%93Milner_type_system
-
Lambda cube https://en.wikipedia.org/wiki/Lambda_cube
-
Book: Types and Programming Languages (By Benjamin C. Pierce)
- High kinded types (generic ‘containers’) HKT proposal: microsoft/TypeScript#1213
- Lightweight higher-kinded polymorphism (fp-ts example): https://github.com/gcanti/fp-ts/blob/master/src/HKT.ts
- Totality check (termination problem) By the time a sequence of (possibly mutually) recursive calls reaches f again, it must be possible to show that one of its arguments has decreased: http://docs.idris-lang.org/en/latest/tutorial/theorems.html#totality-checking
- A dependent type can prove that a value exists. https://en.wikipedia.org/wiki/Dependent_type
- Linear type systems (every variable is used exactly once) Such systems are useful for constraining access to system resources such as files, locks and memory by keeping track of changes of state that occur and preventing invalid states https://en.wikipedia.org/wiki/Substructural_type_system
- Session types can be thought of as “types for protocols”