Size: a a a

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

2020 April 22

ВВ

Вячеслав Волков in TypeScript — русскоговорящее сообщество
Evgen
Я бы сказал НУЖНО
Я бы с радостью, но понятия не имею как можно в настолько ограниченных рамках typescript’а писать все понятно
источник

ВВ

Вячеслав Волков in TypeScript — русскоговорящее сообщество
Artyom Burkan
type IsRequired<T> = Extract<T, null> extends undefined ? true : false;

Как эта конструкция называется? Первый раз вижу
ну condition наверное, не знаю
источник

ВВ

Вячеслав Волков in TypeScript — русскоговорящее сообщество
Artyom Burkan
type IsRequired<T> = Extract<T, null> extends undefined ? true : false;

Как эта конструкция называется? Первый раз вижу
щас дам ссыль на доки
источник

ВВ

Вячеслав Волков in TypeScript — русскоговорящее сообщество
Artyom Burkan
type IsRequired<T> = Extract<T, null> extends undefined ? true : false;

Как эта конструкция называется? Первый раз вижу
источник

AB

Artyom Burkan in TypeScript — русскоговорящее сообщество
Да, уже нашёл, изучаю)
источник

VM

Vasiliy Mazhekin in TypeScript — русскоговорящее сообщество
Вячеслав Волков
Я бы с радостью, но понятия не имею как можно в настолько ограниченных рамках typescript’а писать все понятно
проще надо быть, подмечать и пользоватся более простыми конструкциями, не писать на будущее ничего лишнего, рефакторить часто и понемногу, если увидел что тоже самое можно выразить в более простой форме
источник

VM

Vasiliy Mazhekin in TypeScript — русскоговорящее сообщество
заумный код не признак, его качества
источник

ВВ

Вячеслав Волков in TypeScript — русскоговорящее сообщество
Vasiliy Mazhekin
заумный код не признак, его качества
Я бы с радостью написал проще, Василий. Может быть мне знаний не хватает на это, поэтому я и пишу, чтобы спросить у более умных людей
источник

ВВ

Вячеслав Волков in TypeScript — русскоговорящее сообщество
Про то что надо писать просто и понятно - я и сам знаю)
источник

AB

Artyom Burkan in TypeScript — русскоговорящее сообщество
Вячеслав Волков
Про то что надо писать просто и понятно - я и сам знаю)
Я первый раз вижу, чтобы кто-то брался писать логику для типизации. Я уверен, можно сделать проще)
источник

VM

Vasiliy Mazhekin in TypeScript — русскоговорящее сообщество
практика практика и еще раз практика, пишите, ошибайтесь исправляйте, рефакторите,  - так научитесь
источник

PS

Pavel Shakhov (pongo) in TypeScript — русскоговорящее сообщество
у меня наоборот слишком примитивные типы ( максимум что дженерики. никаких условных типов или чего-то такого
источник

ВВ

Вячеслав Волков in TypeScript — русскоговорящее сообщество
Pavel Shakhov (pongo)
у меня наоборот слишком примитивные типы ( максимум что дженерики. никаких условных типов или чего-то такого
до поры до времени)
источник

VM

Vasiliy Mazhekin in TypeScript — русскоговорящее сообщество
еще хорошо помогает возврат к своему собственному коду, который писался давно (а может быть вчера, но на утро он выглядит как каша).  Если он стал не понятен, то значит что то не то, подумайте, что в нем не хватает для понятности, как его можно было разбить на более простые части.

после исправления запутанных мест, потом вы эти приемы начнете запоминать, и писать сразу понятно
источник

ВВ

Вячеслав Волков in TypeScript — русскоговорящее сообщество
спасибо всем за советы, буду пробовать)
источник

AB

Artyom Burkan in TypeScript — русскоговорящее сообщество
Вячеслав Волков
спасибо всем за советы, буду пробовать)
type IsRequired<T> = Extract<T, null> extends undefined ? true : false;

Будет:

var b =  IsRequired<number> // a: true

Если вникнуть в код то
Extract<T, null> // never
never extends undefined ? true : false; // действительно true

По-моему у тебя уже на этом уровне ошибка
источник

ВВ

Вячеслав Волков in TypeScript — русскоговорящее сообщество
Artyom Burkan
type IsRequired<T> = Extract<T, null> extends undefined ? true : false;

Будет:

var b =  IsRequired<number> // a: true

Если вникнуть в код то
Extract<T, null> // never
never extends undefined ? true : false; // действительно true

По-моему у тебя уже на этом уровне ошибка
Назовем метод IsRequired по-другому - CantBeNullable

type CantBeNullable<T> = Extract<T, null> extends undefined ? true : false;

Мы этим “Extract<T, null>” отбрасываем все кроме null, соответственно если у нас нет null в типах (type = string | null или type = null - здесь есть null, type = string - здесь нет), то Extract вернет never, соответственно условие “Extract extends never” вернет true в случаях когда null нет, и false, когда null есть

(extends undefined я использовал, потому что не знал, что при отсутствии соответствий typescript возвращает null, а не undefined, но мне повезло, что never экстендится от undefined)

спасибо за новую инфу)
источник

YT

Yurii Tryfonkov in TypeScript — русскоговорящее сообщество
Привет.
Импортирую функцию из сторонней библиотеки, у которой в index.d.ts используется 'export * as ns' syntax:

// lib index.d.ts
export * as context from './context';
export { composeMocks } from './composeMocks';

// app index.ts
import { composeMocks } from 'lib'
При компиляции ошибка: String literal expected c указанием на export * as context from './context';

TS 3.7.2. Как можно решить проблему?
источник

ВВ

Вячеслав Волков in TypeScript — русскоговорящее сообщество
Yurii Tryfonkov
Привет.
Импортирую функцию из сторонней библиотеки, у которой в index.d.ts используется 'export * as ns' syntax:

// lib index.d.ts
export * as context from './context';
export { composeMocks } from './composeMocks';

// app index.ts
import { composeMocks } from 'lib'
При компиляции ошибка: String literal expected c указанием на export * as context from './context';

TS 3.7.2. Как можно решить проблему?
звучит так, будто ты пытаешься динамичный путь выстроить для импорта, но как я вижу по коду - это не так
источник

P

Pavel in TypeScript — русскоговорящее сообщество
Наивный вопрос господа: могу ли я определить тип для массива так, что сколько угодно элементов в нем типа Число, а последний элемент строка?
источник