
Alexander
29.09.2016
17:47:23
или всё-таки это огранченный набор типов, подчиняющихся каким-то общим правилам

Vadim
29.09.2016
17:47:31
С любыми словарями

Alexander
29.09.2016
17:47:58
объяви интерфейс "словарь", унаследуй от него все словари, не?

Vadim
29.09.2016
17:50:21
А почему этот код не пашет?
https://www.typescriptlang.org/play/index.html#src=interface%20Some%20%7B%20%0D%0A%20%20%20%20field%3F%3A%20string%3B%0D%0A%7D%0D%0A%0D%0Afunction%20some%3CT%20extends%20Object%3E(arg%3A%20T)%20%7B%0D%0A%20%20%20%20return%20arg%3B%0D%0A%7D%0D%0A%0D%0Asome%3CSome%3E%20(111)%3B
Ведь понятно же что Some является объектом?

Google

Vadim
29.09.2016
17:51:02
Чем же он может еще являться как не объектом?

Vladimir
29.09.2016
17:52:07
Тайпскрипт не различает объекты и примитивы

Aleh
29.09.2016
17:52:17
да, типа все к объекту у него приводимо

Vadim
29.09.2016
17:52:32
Ух...

Alexander
29.09.2016
17:52:47
как-то странно выглядит

Vadim
29.09.2016
17:57:23
Действительно... Получается теперь {} работает как any

Alexander
29.09.2016
18:00:02
а {} и Object — это одно и то же?

Андрей
29.09.2016
18:00:31
почему работает это понятно:
function some<T> (arg: T) {
return arg;
}
some<{}> (111);
вы говорите: эта функция принимает пустой интерфейс
то есть ей что угодно подойдет, у кого у интерфейсе есть "ничего" (пустота между { и } )
в частности, number

Дмитрий
29.09.2016
18:02:04
Можно через typeof замутить ограничение, вроде бы

Alexander
29.09.2016
18:02:24
да, давайте все кодить на ванилле

Google

Дмитрий
29.09.2016
18:03:26
Это не js там

Alexander
29.09.2016
18:04:54
я плохо знаю ts, но не думаю, что typeof компиллируется во что-то другое
А тогда это именно кусок js кода для проверки типа, которая по-хорошему должна решаться как-то покрасивее.

Дмитрий
29.09.2016
18:15:56
Хотя по сути очень костыльное решение
Typeof typeguard называется
function isNumber(x: any): x is number { return typeof x === "number"; }

Oleg
29.09.2016
18:41:16
Голосую за C# в браузере! А лучше Golang, потому что компилится быстрее )
это к паттерн-матчингу, которому до ML как до луны

Дмитрий
29.09.2016
18:43:03

Oleg
29.09.2016
18:44:28
и сколько компилится?

Ave
29.09.2016
18:45:02

Alex
29.09.2016
19:55:31
some<{}> (111); - потому что {} это замена Object а Number потомок Object

Alexander
29.09.2016
20:25:28
Объясните, зачем отделять "примитивы"?
Хотя не надо, сам придумал пример, когда нужно.

Mike
29.09.2016
20:30:48
а что есть "отделять примитивы"?

Alexander
29.09.2016
20:42:28
Зачем в языке, который транспилится в JS, нужно иметь не совместимые между собой типы Object и Number, например.
Вижу пример: если в функции, в которую передается Object, происходит его мутация, при передаче в нее числового примитива любое записанное через variable.property значение уйдет в /dev/null. Пример не то что бы жизненный, но показательный.

Nikita
29.09.2016
20:45:22
кстати, а в TS собираются какой либо синтаксис для паттерн-матчинга вводить?

Google

Aleh
29.09.2016
21:11:52
А разве в js собираются?

Глеб
29.09.2016
21:17:47
Схожая реакция была в HAXE чатике когда спросил про стрелочные функции...
...естественно есть множество областей где паттерн мачинг не нужен.
Но, если работать с концепцией потоков например как у flyd https://github.com/paldepind/flyd ... то мачить приходится одновременно несколько переменных(потоков).
У меня есть своя балалайка, и норм.
Будущее вижу определённо за такими фичами как мачинг.... if else - устаревающая тема, мы же не пишем сегодня на машинном коде.
просто и удобней

Yuriy
29.09.2016
21:29:33
Ребята, можегите плиз :-) Как в приложение на Electron (Angular 2) заимпортить в компонент страницы модуль ES5. ? Например это: https://github.com/Teamwork/node-afk

Глеб
29.09.2016
21:30:25
import * as Name from 'module-name'
?

Yuriy
29.09.2016
21:31:17
Разумеется он установлен :-)

Alexander
29.09.2016
21:31:27
куда установлен?

Yuriy
29.09.2016
21:31:43
Относительно файла: ../node_modules/afk

Alexander
29.09.2016
21:31:48
а ты откуда грузишь?

Yuriy
29.09.2016
21:32:30
Я гружу его из activity.service:

Глеб
29.09.2016
21:33:01
как-то такой лом использовал
declare function require(n: string): any
declare const afk: any
let afk = require('afk');

Глеб
29.09.2016
21:34:34
declare const afk: any
нужен только если подклчаешь библиотеку через
<script src="./libs/afk.min.js"></script>
некоторые через импорт завсести таки не получилось.

Yuriy
29.09.2016
21:36:32
Вот это помогло, без него на require ругалось раньше: declare function require(n: string): any;

Глеб
29.09.2016
21:41:44
у меня другая проблема:
<img class="asf-logo" src="{'./assets/img/asf_logo.svg'}">
если не экранирую в {'...'}
получаю такою ошибку
Module not found: Error: Can't resolve './assets/img/asf_logo.svg' in '/Users/soul/source/asf/asf-liverating/app/components/start'
@ ./~/html-loader!./app/components/start/start.html 1:201-237
использую http://riotjs.com ...всёж второй ангуляр не для мелких проектов

Yuriy
29.09.2016
21:44:08
Может можно "{" заменить что "{[" или еще что-то?
в конфиге

Google

Yuriy
29.09.2016
21:44:24
Хотя я с таким еще не встречался..
я на фронте поскольку- опстольку :-)

Глеб
29.09.2016
21:45:42
<img class="asf-logo" src="./assets/img/asf_logo.svg">
должно быть так, но так он зачем-то импортит .svg как модуль
и вот думаю, есть ли флаг чтоб компилятор тайпскрипта нигогда не ругался на
Module not found...
...или вменяемая документация как его научить находить модули.

Alexander
29.09.2016
22:29:29

Admin
ERROR: S client not available

Alex
30.09.2016
20:10:02

Vadim
02.10.2016
14:40:29
Люди! Как под TS тестировать методы, которые не экспортируются модулями?
Есть ли какие-то инструменты для этого, работающие с TS?

Alexander
02.10.2016
14:40:52
тестируй методы, которые используют методы, которые не экспортируются модулями
есть мнение, что не надо тестировать приватные методы

Vadim
02.10.2016
14:41:36
Да, есть два подхода к юнит-тестированию )

Andrey
02.10.2016
14:42:29
приватные методы даже вредно тесторивать прямо, так как при рефакторинге придется менять тесты

Vadim
02.10.2016
14:43:14
Ух... Ну ладно. Пока твердого мнения на этот счет у меня нет, так что может на данный момент и соглашусь )

Дмитрий
02.10.2016
14:46:53

Aleh
02.10.2016
14:47:44
ну или tdd там…)

Denis
03.10.2016
14:28:09
http://blog.jonasbandi.net/2016/10/myth-of-superset.html

Дмитрий
04.10.2016
02:38:50
The reason for TypeScript's existence is to have a compiler and language which can enforce types better than vanilla Javascript does. Any regular Javascript is valid TypeScript, syntactically. That does not mean that the compiler must be entirely happy with it. Vanilla Javascript often contains code which is problematic in terms of type security. That doesn't make it invalid TypeScript code, but it's exactly the reason why TypeScript exists and it's exactly the compiler's job to point out those problems to you.

Aleh
04.10.2016
05:09:55
ну да, что такое valid/invalid? null.indexOf(1) валидный js?
это поведение полностью описано спекой, его может зажевать любой парсер, ну видимо валидный. Парсер ts тоже спокойно это съест, диагностика не пройдет

Vladimir
04.10.2016
06:35:41
Но почему TS кладет на спеку при транспиляции?

Google

Vadim
04.10.2016
06:53:25

Aleh
04.10.2016
07:57:08
Не компилится или диагностику(typecheck) не проходит?

Vladimir
04.10.2016
07:59:40
Те же классы банально
https://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=es2015-loose&experimental=false&loose=false&spec=true&code=class%20A%20%7B%0A%20%20foo()%20%7B%7D%0A%7D&playground=true
https://www.typescriptlang.org/play/index.html#src=class%20A%20%7B%0D%0A%20%20foo()%20%7B%7D%0D%0A%7D
Точнее
https://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=es2015&experimental=false&loose=false&spec=true&code=class%20A%20%7B%0A%20%20foo()%20%7B%7D%0A%7D&playground=true

Ҫѐҏӗѫӑ
04.10.2016
12:57:11
нет новостей про имплисит эни во флоу?

Vladimir
04.10.2016
12:59:46
Нет

Nikita
04.10.2016
13:26:16
type BoundActionCreator<T: Function> = (...args: $Arguments<T>) => void;
как такое сделать?

Vladimir
04.10.2016
13:27:45
что такое $Arguments?

Nikita
04.10.2016
13:31:13
ну, это то, чего нет)
смысл в том, что я меняю функцию, но аргументы сохраняются
то есть хочется возможность получить аргументы, любой функции