Typescript: the good parts

Михаил Башуров @saitonakamura

Бабочка махаон

TypeScript:
The good parts

Михаил Башуров

  • .NET
  • React
  • Typescript
  • ...
@saitonakamura
  • Тесты
  • Красивый UI
  • Типы
  • ...

JavaScript. It's basically TypeScript with implicit `any`, but you don't have to write any types

— Horse JS (@horse_js) 30 октября 2018 г.

Any это Серая слизь

Серая слизь - апокалиптический сценарий самореплицирующихся наномашин

any

  • Отключает все проверки
  • Растекается по кодовой базе
  • Полезен в исключительных случаях

unknown

  • >= typescript@3.0
  • Заставляет сделать рантайм проверки
  • Нужен при общении с внешней средой
Постер фильма Разлом Сан-Андреас

Strict

strictNullChecks

noImplicitAny

  • any только явно
Great christian schism illustration as a metaphor for typescript and babel different view on imports Great import schism: Typescript confusion around imports explained

--esModuleInterop

Named imports

  • Рефакторинг
  • Реэкспорт
  • Автоимпорт
  • Тришейкинг

Default imports

  • Совместимость с require
  • Рефакторинг
  • export { default } from './module'
  • Автоимпорт
  • Тришейкинг

Typescript = ES201* + типы

И еще

Проверка типов

Т-100 из фильма Терминатор

Линтеры

Линтеры

Type

  • Более гибко & |
  • Чуть меньше писать
  • Нет слияния деклараций

Interface

  • Слияние деклараций

Классы

Bind

  • this.handle = this.handle.bind(this)
  • Больше писать
  • Сложнее поддерживать
  • Стандарт
  • Чуть быстрее

bound class fields

  • handle = val => this.setState({ val })
  • Кратко
  • Удобно
  • Еще нет в стандарте
  • Менее производительные

babel 7

Генерить в рантайм по типу

        type Task = { title: string }
        const json = JSON.parse("{}")
        const isValid = validate<Task>(json)
      

bit.ly/ts_good_parts

Inner navigation

  1. Lets you reveal list items one by one