@typescript_ru

Страница 199 из 669
Kirill
05.04.2017
08:27:51
Что-то не пашет.

https://www.typescriptlang.org/play/index.html#src=enum%20Enum%20%7B%0D%0A%20%20%20%20name1%2C%0D%0A%20%20%20%20name2%2C%0D%0A%7D%0D%0A%0D%0Ainterface%20I%20%7B%0D%0A%20%20%20%20%5Bname%3A%20Enum%5D%3A%20()%20%3D%3E%20void%3B%0D%0A%7D%0D%0A

Сергей
05.04.2017
08:30:35
Я подозреваю, что тс не умеет вычисляемые поля нормально

Aleh
05.04.2017
08:31:02
Каждый раз, когда вижу у кого-то enum ?

Google
Aleh
05.04.2017
08:31:10
Умеет

Kirill
05.04.2017
08:32:40
Надо поискать, может есть уже. Ещё не догуглил.

Dreamerinnoise
05.04.2017
08:43:00
Cry me a river

Kirill
05.04.2017
08:44:58
Короче можно просто делать так и не париться.



Dreamerinnoise
05.04.2017
08:45:49
Я вот такую неприятность обнаружил вчера

Есть компонент со static member

Есть декоратор injectIntl

В общем, с ним статики пропадают

Дмитрий
05.04.2017
08:56:36
Умеет
Серьезно? Прям настоящие вычисляемые поля?

Yuri
05.04.2017
09:16:19
кто-нить использует typeguards в юнит-тестах? Я тут подумал, это же неплохой способ проверки, что функция выдала что-то вменяемое (в первом приближении)

Google
Yuri
05.04.2017
09:24:14
а не тормозят этот, перформанс?

Yuri
05.04.2017
09:25:45
шо?

It just so happens that TypeScript has something called a type guard. A type guard is some expression that performs a runtime check that guarantees the type in some scope.

https://www.typescriptlang.org/docs/handbook/advanced-types.html

Aleh
05.04.2017
09:27:49
It just so happens that TypeScript has something called a type guard. A type guard is some expression that performs a runtime check that guarantees the type in some scope.
Проверка которая Boolean будет в рантайме, тип вычисляется в компайлтайме

Kirill
05.04.2017
10:38:54
Поместил enum в файл, где у меня экспортируются (без declare) только интерфейсы. И теперь для этого файла ошибка ts-loader: Module build failed: Error: Typescript emitted no output for noEmit стоит false Знаю, что enum сущность рантайма, а interface сущность этапа компиляции. Они не дружат в таком тандеме?

У файла расширение d.ts просто для дополнительной информации, не для declare.

Убрал export у enum и теперь пишет: A 'declare' modifier is required for a top level declaration in a .d.ts file.

Блин, короче, ну нужно было делать расширение d.ts Оно получается зарезервировано и нельзя использовать как обычное расширение .ts

Kirill
05.04.2017
10:53:44
Хотел отделить чисто для информативности. Теперь придётся переименовывать в что-то на подобии file.decl.ts

Kirill
05.04.2017
10:54:51
Да, но это ++ стайл.

Friedrich
05.04.2017
10:55:05
jsxx

Сергей
05.04.2017
10:55:07
неа)) @ZeroBias так юзает, я тож. Весьма удобно

Google
Friedrich
05.04.2017
10:55:19
О, правда кто-то так делает? Класс.

Сергей
05.04.2017
10:56:15
jsxx
tspp

Friedrich
05.04.2017
10:56:23
:)

Kirill
05.04.2017
10:57:25
или в file.h.ts
Давайте это протащим как стандарт де-факто в тс-сообществе.

Aleh
05.04.2017
10:57:43
зачем?

Kirill
05.04.2017
10:58:04
Информативно же.

Чтобы все друг друга понимали.

Неформальная конвенция.

Aleh
05.04.2017
10:59:24
я вообще не понимаю зачем использовать d.ts, если только они не около js файлов

Kirill
05.04.2017
11:02:24
Нее-нее. h.ts - это ведь не альтернатива для d.ts, это имено ts файл для декларации типов без declare. Например, для интерфейсов реакт-компонентов.

Aleh
05.04.2017
11:07:06
почему их просто в ts файле не писать?

Kirill
05.04.2017
11:08:56
почему их просто в ts файле не писать?
Просто так удобнее. Лично для меня. Но судя по отзывам, не я один предпочитаю такой стиль.

Artur
05.04.2017
11:09:04
ГРуппировать надо сущности по бизнес-принадлежности.

Aleh
05.04.2017
11:09:13
^ все так

Artur
05.04.2017
11:09:16
А не отделять декларации от использования

Если у меня есть модуль, в котором есть функция, которая принимает объект, который описан неким интерфейсом, нет ни одной причины не положить интерфейс рядом с фнукцией. А если он предполагает быть внешним, то ещё и экспортнуть его. Импортировать будет удобнее. export interface SomeFunctionArgShape { prop1: string prop2: string } export function SomeFunction(arg: SomeFunctionArgShape) { /* ... */ } И дальше: import {SomeFunction, SomeFunctionArgShape} from "./module" // и поехали

Иногда бывает, что модулей много, и все они составляют некую бизнес-единицу. Внутри какие-то типы переиспользуются. Тогда я делаю types.ts и кладу общие типы туда. Но там же могут быть guard-функции например, ничего страшного в этом нет.

Aleh
05.04.2017
11:13:34
ну types я бы не называл, а опять же группировал по сущностям

Сергей
05.04.2017
11:14:55
А не отделять декларации от использования
у меня для одного ts файла может быть около 10-15 интерфейсов а также есть интерфейсы которые не привязаны ни к одному конкретному файлу, используются много где также есть интерфейсы только для бизнес сущностей

Artur
05.04.2017
11:15:23
ну types я бы не называл, а опять же группировал по сущностям
Тут уже сказывается лень придумывать названия )

Google
Aleh
05.04.2017
11:15:32
а еще есть функции, которые не привязаны ни к одному конкретному файлу

Artur
05.04.2017
11:15:33
Вся равно дальше папочки с модулями не уходит

Aleh
05.04.2017
11:15:35
а еще есть классы

и переменные

они тоже могут быть не привязаны к конкретным файлам

Artur
05.04.2017
11:15:56
а еще есть классы
Угу, класс это вроде бы и тип, а вроде бы и рантайм

Aleh
05.04.2017
11:16:01
ага

Artur
05.04.2017
11:16:01
А равно как и енумы

Admin
ERROR: S client not available

Aleh
05.04.2017
11:16:06
а енум вот не нужен

Сергей
05.04.2017
11:16:19
а енум вот не нужен
вот тоже не смог найти причину использовать enum

Artur
05.04.2017
11:16:33
Был нужен пока не было string literal types

Aleh
05.04.2017
11:16:38
нужен нормальный енум, а тот, что есть не нужен. Так правильнее)

Artur
05.04.2017
11:16:39
А сейчас легаси осталось

Сергей
05.04.2017
11:16:48
а вот .h.ts файлы юзаю ибо удобно, есть директория с бизнес сущностью и там типы

Aleh
05.04.2017
11:17:17
который делает проверки и не попадает в рантайм в виде странного объекта

что-то типа const enum

но с норм проверками

Artur
05.04.2017
11:17:54
что-то типа const enum
Хотел только что предлоджить )

Google
Aleh
05.04.2017
11:22:44
но их не оч удобно дебажить потом)

Дмитрий
05.04.2017
11:39:22
Какие-то противоречащие друг другу требования

Чтобы и дебажить было легко и в рантайм не попадало

Max
05.04.2017
13:18:16
пацаны

как это сраный jest заставить работать с TS

/Volumes/dev/apps/triplepoint/formbuilder/src/views/components/Sidebar/SidebarButton.tsx:1 ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import * as React from 'react';

подключил ts-jest

чот не але

Aleh
05.04.2017
13:19:17
а таргет какой?

Max
05.04.2017
13:19:23
es5

менял на ES6 — та же херня (

Aleh
05.04.2017
13:19:49
а на es3? :)

Max
05.04.2017
13:20:19
очень смешно

но тем не менее я уже голову сломал (

Aleh
05.04.2017
13:20:37
ну так-то да, чего-то ts-jest не але

Mike
05.04.2017
13:20:46
очень смешно
ни разу не смешно, я es3 таргет юзаю

и это иногда оправдано

Max
05.04.2017
13:21:33
мда

throw "qweasd" воткнул в preprocessor.js

пофигу

в process()

Страница 199 из 669