
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
Умеет

Сергей
05.04.2017
08:32:14

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

Aleh
05.04.2017
09:23:38
Я их юзаю вне юнит-тестов)

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

Aleh
05.04.2017
09:24:30
Они же compile-time

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

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

Artur
05.04.2017
10:51:18

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

Сергей
05.04.2017
10:54:29

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

Friedrich
05.04.2017
10:56:23
:)

Kirill
05.04.2017
10:57:25

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

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

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

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

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
и это иногда оправдано

Max
05.04.2017
13:21:33
мда
throw "qweasd" воткнул в preprocessor.js
пофигу
в process()