
Vlad
14.09.2016
06:51:41
Неплохо было бы чтоб и в новой версии тс этот сахар появился

Viacheslav
14.09.2016
06:55:21
ts != c# для JS
ts = JS + type checking + transpiler
этот сахар к проверке типов не имеет отношения, значит мимо

Google

Andrey
14.09.2016
07:12:24

Vlad
14.09.2016
07:14:15
Дефалтное значение параметра метода тоже ведь сахар

Andrey
14.09.2016
07:14:54
но я вроде видел предложение для js, может и введут)

Vlad
14.09.2016
07:21:02
оу, это круто)

Sergey
14.09.2016
07:22:39
Ну да, сахар небольшой впринципе. Но тут скорее только через es+

Vlad
14.09.2016
07:23:37
большой небольшой - штука полезная!)

Dreamerinnoise
14.09.2016
07:45:33
Поясните слоупоку, декораторы остаются @? приватные поля становятся #?

Andrey
14.09.2016
07:46:51
пока не определились)
есть предложение, что бы вообще сделать декораторы через #,а приватные @ )

Sergey
14.09.2016
08:04:13

Ҫѐҏӗѫӑ
14.09.2016
08:12:11
на самом деле ближайшую судьбу этого всего в ES узнаем 27-29 сентября. я бы вообще прайват филдс не продвигал дальше…
за ненужностью

Sergey
14.09.2016
08:20:02
за ненужностью
Дык их хватает в том даже виде, что есть сейчас. В качестве соглашения и какой-никакой проверки. Делать из ts java смысла нет.

Google

Sergey
14.09.2016
08:20:23

Ярослав
14.09.2016
08:21:43

Ҫѐҏӗѫӑ
14.09.2016
08:22:43
тем, что можно длинную цепочку делать
а вообще для этого монада Maybe / Option есть :trollface:

Vadim
14.09.2016
08:49:05
type SomeFuncT = {
(): void;
}
добавь к этому | и получится то, что хочешь)
Нет. Так не работает. Возможно я неправильно описал вопрос. Мне нужно оверлоад функции, аналог этого:
function pickCard(x: string): number;
function pickCard(x: number): {suit: string; card: number; };
function pickCard(x): any {
.....
}
Но описать в виде только интерфейса. То-есть, без реализации. Ибо я пишу тайпинг для сторонней библиотеки.

Aleh
14.09.2016
08:50:27

Vadim
14.09.2016
08:54:48

Aleh
14.09.2016
08:55:23
qqq(123) нельзя ж
а ты заявил, что можно

Vadim
14.09.2016
08:55:41
Так это же одна из возможных сигнатур

Aleh
14.09.2016
08:55:58
ну, ты подсовываешь что-то, что не имплементит все
тот, кто ожидает тип CanBeCalledDifferent ожидает, что может вызвать любым способом, а не каким-то одним из

Vadim
14.09.2016
08:56:24
А как описать функцию, которая имеет две сигнатуры - одна с аргументом, а другая без аргумента?

Aleh
14.09.2016
08:57:00
const qqq: CanBeCalledDifferent = (a?: number) => 12;

Vadim
14.09.2016
08:57:11
Упс, точно )))
Хотя нет. Как указать что только в первом случае она будет возвращать строку
В общем как указать что функция может иметь две совершенно разные формы? Как входных параметров, так и выходных

Aleh
14.09.2016
08:58:40
(a?: number) => { if (check(a)) { return ""; } return 0; }
check уже как хочешь пиши

Google

Aleh
14.09.2016
08:59:12
ты можешь описать несколько сигнатур, но они все по итогу должны быть заимплеменчены одной общей

Vadim
14.09.2016
08:59:22

Aleh
14.09.2016
08:59:28
в js, а значит и в ts нет перегрузки

Vadim
14.09.2016
09:00:32
Мне просто нужно указать что в случае если функция принимает такой-то тип аргумента, то на выходе она отдает такой-то тип. В реализацию на уровне кода мне погружаться не нужно

Aleh
14.09.2016
09:00:33
в type ты можешь красиво описать какая должна быть функция по случаям, в реализации она должна имплементить все твои определения
так у тебя же type для этого
ты это уже сделал

Vadim
14.09.2016
09:02:35
Почему же тогда тут ошибка?
type CanBeCalledDifferent = {
(a?: number): string;
(): number;
}
const qqq: CanBeCalledDifferent = () => 12;
Ведь реализован второй вариант определения

Aleh
14.09.2016
09:03:19
а надо реализовать все

Vadim
14.09.2016
09:03:32
А если варианты сигнатур несовместимы?

Aleh
14.09.2016
09:03:42
например?

Vadim
14.09.2016
09:03:58
Ну как в данном примере корректно описать тайпинг?

Vadim
14.09.2016
09:04:22
Что б указать что только в первом случае должна возвращаться строка (не описывая реализацию)
Просто на уровне интерфейса

Aleh
14.09.2016
09:04:46
https://www.typescriptlang.org/play/index.html#src=type%20SomethingStrange%20%3D%20%7B%0D%0A%09withSomeMethod()%3A%20void%3B%0D%0A%7D%0D%0Atype%20CanBeCalledDifferent%20%3D%20%7B%0D%0A%09(a%3A%20number)%3A%20void%3B%0D%0A%09(a%3A%20string)%3A%20void%3B%0D%0A%09(a%3A%20SomethingStrange)%3A%20SomethingStrange%3B%0D%0A%09(a%3A%20number%2C%20b%3A%20string)%3A%20SomethingStrange%3B%0D%0A%7D%0D%0Alet%20myF%3A%20CanBeCalledDifferent%3B%0D%0AmyF(%7B%7D)

Vadim
14.09.2016
09:05:13
У тебя там ошибка

Aleh
14.09.2016
09:05:13
специально в конце, чтобы показать, что оно проверяет)

Vadim
14.09.2016
09:07:51
Так почему же тогда мой простейший вариант не работает?
type CanBeCalledDifferent = {
(a: number): string;
(): number;
}
const qqq: CanBeCalledDifferent = () => 12;

Google

Vadim
14.09.2016
09:08:13
Строка const qqq: CanBeCalledDifferent = () => 12; подпадает под второе определение

Aleh
14.09.2016
09:09:22
потому что если я вызову твою функцию с числом, я не получу строку
а значит qqq(123).replace() - runtime error

Vadim
14.09.2016
09:11:01
То-есть, мне в любом случае необходимо написать реализацию?
Даже для тайпинга что-ли?

Aleh
14.09.2016
09:11:09
нет

Admin
ERROR: S client not available

Aleh
14.09.2016
09:11:23
ты зачем-то ее пишешь и в тоже время не хочешь писать

Vadim
14.09.2016
09:11:37
Мне нужно в тайпинге описать две возможные реализации
Не совместимые между собой

Aleh
14.09.2016
09:11:44
ты их описал
в type
теперь задекларируй переменную
и все

Vadim
14.09.2016
09:12:02
Ок, спасибо!

Aleh
14.09.2016
09:12:06
зачем ты пишешь реализацию, я не знаю)

Vadim
14.09.2016
09:18:39
Да, точно! ) Заэкспериментировался с кодом )
Кстати, что интересно, сперва я пытался описать такой оверлоадинг с помощью интерфейса, но это не работало. С помощью type - все ок. Странно почему оверлоад можно описать только в виде type? В документации я этого не нашел.

Aleh
14.09.2016
09:25:03

Google

Aleh
14.09.2016
09:25:05
неправда

Vadim
14.09.2016
09:26:28
Етить колотить!!! )))
Действительно к синтаксису еще не привык полностью, и пропускаю некоторые мелочи. Дело было в том, что я использовал знак равно в декларации интерфейса )

Nikita
14.09.2016
11:44:36
спустя какое-то время и покрытие flow проекта, вебшторм стал дичайше лагать
что делать?

Dreamerinnoise
14.09.2016
12:10:03
Как включить вайлдкарды в TS2?

Aleh
14.09.2016
12:10:42

Dreamerinnoise
14.09.2016
12:11:10
declare module "*!text" {
const content: string;
export = content;
}
пытаемся сделать
и не пашет
import text = require("./hello.txt!text");
text.toLowerCase();

Ҫѐҏӗѫӑ
14.09.2016
13:03:42
на слете tc39 в конце сентября выделено 15 минут на обсуждение sigil swap для прайват пропертиз и декораторов
запасаемся поп корном

Vladimir
14.09.2016
13:05:14
у майкрософта бомбит явно
у ангуляра тоже
класс

Ҫѐҏӗѫӑ
14.09.2016
13:05:48
ага, чел Daniel Ross… как там его.. уже влез короче
Йегуда не определился)
так что все шансы)