Size: a a a

TypeScript — русскоговорящее сообщество

2020 April 22

AB

Artyom Burkan in TypeScript — русскоговорящее сообщество
Alxndr 🗽👇
вот так подсвечивает
interface Props {
   innerHtml?: string
}
источник

A

Alxndr 🗽👇 in TypeScript — русскоговорящее сообщество
Artyom Burkan
interface Props {
   innerHtml?: string
}
тогда если я не передам компоненту innerHtml и children тоже, то мне ничего не подсветится
источник

AB

Artyom Burkan in TypeScript — русскоговорящее сообщество
Переданные аргументы надо проверять на уровне кода, а не типизацией
источник

AB

Artyom Burkan in TypeScript — русскоговорящее сообщество
Тип never используют если функция никогда не возаращается, например, произошла ошибка и там throw
источник

A

Alxndr 🗽👇 in TypeScript — русскоговорящее сообщество
само собой, но это не типобезопасно
источник

A

Alxndr 🗽👇 in TypeScript — русскоговорящее сообщество
я заменил на null, вместо never
источник

AB

Artyom Burkan in TypeScript — русскоговорящее сообщество
Alxndr 🗽👇
само собой, но это не типобезопасно
Это типо безопасно. Props {innerHtml?: string} == Props {innerHtml: undefined | string}
Делаешь проверку всегда props?.innerHtml
источник

AB

Artyom Burkan in TypeScript — русскоговорящее сообщество
Alxndr 🗽👇
я заменил на null, вместо never
null используют как пустую ссылку на объект
источник

A

Alxndr 🗽👇 in TypeScript — русскоговорящее сообщество
Artyom Burkan
Это типо безопасно. Props {innerHtml?: string} == Props {innerHtml: undefined | string}
Делаешь проверку всегда props?.innerHtml
Ну нет же, статически ничего не выводится
источник

A

Alxndr 🗽👇 in TypeScript — русскоговорящее сообщество
3 и 4 ContentBlock должны ругаться на неправильные параметры
источник

A

Alxndr 🗽👇 in TypeScript — русскоговорящее сообщество
получается плохое апи компонента без статических подсказок
источник

AB

Artyom Burkan in TypeScript — русскоговорящее сообщество
Alxndr 🗽👇
получается плохое апи компонента без статических подсказок
Получается сложное API))
источник

u

uid in TypeScript — русскоговорящее сообщество
Denis
Всем привет!

Помогите плз с задачей:

Есть переменная const key = 'id'. Как мне ее добавить в тип как имя для ключа?
type dict = {
  `название ключа из переменной key`: string
}


чтобы условно на выходе получилось
type dict = {
  id: string
}
С помощью mapped types: play.
источник

EG

Egor Gorbachev in TypeScript — русскоговорящее сообщество
Alxndr 🗽👇
3 и 4 ContentBlock должны ругаться на неправильные параметры
type Props = {} & ({innerHtml: string} | {children: React.ReactNode})

А внутри компонента используй if ('innerHtml' in props) для того, чтобы понять что передали
источник

A

Alxndr 🗽👇 in TypeScript — русскоговорящее сообщество
Egor Gorbachev
type Props = {} & ({innerHtml: string} | {children: React.ReactNode})

А внутри компонента используй if ('innerHtml' in props) для того, чтобы понять что передали
спасибо, попробую так тоже
источник

EG

Egor Gorbachev in TypeScript — русскоговорящее сообщество
Alxndr 🗽👇
спасибо, попробую так тоже
Только что проверил, нужно ещё добавить never:

type Props = {} & ({innerHtml: string, children?: never} | {children: React.ReactNode, innerHtml?: never})
источник

A

Alxndr 🗽👇 in TypeScript — русскоговорящее сообщество
ну я почти так и сделал, только без пустого обьекта
источник

EG

Egor Gorbachev in TypeScript — русскоговорящее сообщество
Alxndr 🗽👇
ну я почти так и сделал, только без пустого обьекта
да, он не обязателен. это чтобы общие пропы добавлять
источник

A

Alxndr 🗽👇 in TypeScript — русскоговорящее сообщество
аа, ну да
источник

A

Alxndr 🗽👇 in TypeScript — русскоговорящее сообщество
ну в общем норм способ? а то мне один человек писал, что слишком сложно
источник