Discriminated unions в TypeScriptr 2.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.06.16 12:50
Оценка: 37 (3)
https://github.com/Microsoft/TypeScript/pull/9163

This PR implements support for discriminated union types, inspired by suggestions in #186 and #1003. Specifically, we now support type guards that narrow union types based on tests of a discriminant property and furthermore extend that capability to switch statements. Some examples:

interface Square {
    kind: "square";
    size: number;
}

interface Rectangle {
    kind: "rectangle";
    width: number;
    height: number;
}

interface Circle {
    kind: "circle";
    radius: number;
}

type Shape = Square | Rectangle | Circle;

function area(s: Shape) {
    // In the following switch statement, the type of s is narrowed in each case clause
    // according to the value of the discriminant property, thus allowing the other properties
    // of that variant to be accessed without a type assertion.
    switch (s.kind) {
        case "square": return s.size * s.size;
        case "rectangle": return s.width * s.height;
        case "circle": return Math.PI * s.radius * s.radius;
    }
}

function test1(s: Shape) {
    if (s.kind === "square") {
        s;  // Square
    }
    else {
        s;  // Rectangle | Circle
    }
}

function test2(s: Shape) {
    if (s.kind === "square" || s.kind === "rectangle") {
        return;
    }
    s;  // Circle
}

A discriminant property type guard is an expression of the form x.p == v, x.p === v, x.p != v, or x.p !== v, where p and v are a property and an expression of a string literal type or a union of string literal types. The discriminant property type guard narrows the type of x to those constituent types of x that have a discriminant property p with one of the possible values of v.

Note that we currently only support discriminant properties of string literal types. We intend to later add support for boolean and numeric literal types.

... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[17]: Discriminated unions в TypeScriptr 2.0
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 01.07.16 23:12
Оценка: 14 (1) +1
Здравствуйте, Serginio1, Вы писали:

S> Да очень информативно. И где именно существует? В вакууме? Ты хоть пример приводи.


Добавляешь в проект файл на TypeScript, компилируешь, получаешь Javascript, делаешь с ним что угодно. Asp.Net в процессе никак не фигурирует.
Ce n'est que pour vous dire ce que je vous dis.
Re[2]: Discriminated unions в TypeScriptr 2.0
От: SergeyT. США http://sergeyteplyakov.blogspot.com/
Дата: 28.06.16 15:56
Оценка: +1 :)
Здравствуйте, VladD2, Вы писали:

AVK>>https://github.com/Microsoft/TypeScript/pull/9163


VD>А какое отношение TypeScriptr к дотнету имеет?


Хейлсберг?
Re[8]: Discriminated unions в TypeScriptr 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.06.16 21:18
Оценка: -1
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Serginio1, Вы писали:


AVK>>>Какая связь между отладкой в студии и ASP.NET?

S>> Думаю по Tcp/Ip

AVK>Ты так троллишь бестолково что ли?

Каков вопрос таков и ответ. На Asp.Net сразу делается и клиент и сервер.
В клиент не входит TS. TS испльзуется только на этапе компиляции.
То есть может быть коровы без молока, но не может быть молоко без коровы.
и солнце б утром не вставало, когда бы не было меня
Re[7]: Discriminated unions в TypeScriptr 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.06.16 22:50
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>TS, в отличие от тобой перечисленных, на 100% обратно совместим с JS. Т.е. любой исходник на JS можно переименовать в TS и все будет работать.


Это ни о чем не говорит. В Шарпе тоже есть dynamic, а в Nemerle late, но от этого они динамически-типизированными не становятся. Наличие статической типизации — это доминантный признак .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Discriminated unions в TypeScriptr 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.07.16 20:44
Оценка: -1
Здравствуйте, AndrewVK, Вы писали:



AVK>Невозможно дать ссылочку на отсутствие проблем работы без ASP.NET. Вот ссылочку на то, что без ASP.NET никак дать вполне можно.


S>>Я бы с удовольствием на него перешел с C# в определенных случаях.


AVK>При чем тут C#? C# коммпилируется в IL, TS в JS. Они друг друга не заменяют никак.

То есть TS отдельно от Asp.Net не существует? И мой тезис о том, что TS интегрирован в ASP.Net верен?
Ладно я не прав.
и солнце б утром не вставало, когда бы не было меня
Re[18]: Discriminated unions в TypeScriptr 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.07.16 23:34
Оценка: :)
Здравствуйте, Don Reba, Вы писали:

DR>Здравствуйте, Serginio1, Вы писали:


S>> Да очень информативно. И где именно существует? В вакууме? Ты хоть пример приводи.


DR>Добавляешь в проект файл на TypeScript, компилируешь, получаешь Javascript, делаешь с ним что угодно. Asp.Net в процессе никак не фигурирует.

Спасибо. Просто отдельно от asp.Net не добавлял. Надо будет попробовать.
и солнце б утром не вставало, когда бы не было меня
Re: Discriminated unions в TypeScriptr 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.06.16 01:00
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>https://github.com/Microsoft/TypeScript/pull/9163


А какое отношение TypeScriptr к дотнету имеет?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Discriminated unions в TypeScriptr 2.0
От: Jack128  
Дата: 28.06.16 18:49
Оценка:
Здравствуйте, SergeyT., Вы писали:

ST>Здравствуйте, VladD2, Вы писали:


AVK>>>https://github.com/Microsoft/TypeScript/pull/9163


VD>>А какое отношение TypeScriptr к дотнету имеет?


ST>Хейлсберг?


Тогда по праву старшинства топик должен быть в Delphi & Builder
Re[2]: Discriminated unions в TypeScriptr 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.06.16 04:31
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, AndrewVK, Вы писали:


AVK>>https://github.com/Microsoft/TypeScript/pull/9163


VD>А какое отношение TypeScriptr к дотнету имеет?

Он точно имеет отношение к asp.Net. А там TypeScript интегрирован.
А asp.Net это дотнет. Так, что всё логично
и солнце б утром не вставало, когда бы не было меня
Re[3]: Discriminated unions в TypeScriptr 2.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.06.16 15:20
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Он точно имеет отношение к asp.Net. А там TypeScript интегрирован.


Это каким же образом он туда интегрирован?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[4]: Discriminated unions в TypeScriptr 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.06.16 16:44
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Serginio1, Вы писали:


S>> Он точно имеет отношение к asp.Net. А там TypeScript интегрирован.


AVK>Это каким же образом он туда интегрирован?

Таким же как и JavaScript. отладка в студии.
и солнце б утром не вставало, когда бы не было меня
Re[5]: Discriminated unions в TypeScriptr 2.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.06.16 19:44
Оценка:
Здравствуйте, Serginio1, Вы писали:

AVK>>Это каким же образом он туда интегрирован?

S> Таким же как и JavaScript. отладка в студии.

Какая связь между отладкой в студии и ASP.NET?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[6]: Discriminated unions в TypeScriptr 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.06.16 20:26
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Serginio1, Вы писали:


AVK>>>Это каким же образом он туда интегрирован?

S>> Таким же как и JavaScript. отладка в студии.

AVK>Какая связь между отладкой в студии и ASP.NET?

Думаю по Tcp/Ip
и солнце б утром не вставало, когда бы не было меня
Re[7]: Discriminated unions в TypeScriptr 2.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.06.16 20:32
Оценка:
Здравствуйте, Serginio1, Вы писали:

AVK>>Какая связь между отладкой в студии и ASP.NET?

S> Думаю по Tcp/Ip

Ты так троллишь бестолково что ли?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[3]: Discriminated unions в TypeScriptr 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.06.16 21:13
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Он точно имеет отношение к asp.Net. А там TypeScript интегрирован.

S>А asp.Net это дотнет. Так, что всё логично

Для asp.Net у нас, вроде, отдельный форум. Да и к asp.Net этот язык имеет тоже опосредованное отношение. Чисто броузерный язык. Только не ясно куда его тнести. Тут народ его в динамически-типизированные хочет отправить, но он ведь не динамический.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Discriminated unions в TypeScriptr 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.06.16 21:23
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Serginio1, Вы писали:


S>> Он точно имеет отношение к asp.Net. А там TypeScript интегрирован.

S>>А asp.Net это дотнет. Так, что всё логично

VD>Для asp.Net у нас, вроде, отдельный форум. Да и к asp.Net этот язык имеет тоже опосредованное отношение. Чисто броузерный язык. Только не ясно куда его тнести. Тут народ его в динамически-типизированные хочет отправить, но он ведь не динамический.


https://rsdn.ru/forum/dotnet/6486563.1
Автор: Serginio1
Дата: 30.06.16

Он пока не браузерный язык. Когда будет, тогда он и не будет иметь отношение.
Он кстати динамический по природе. Там псевдотипизация на уровне интеллисенсе. Все равно он транслируется в JS.
Хотя возможно я уже отстал от жизни
и солнце б утром не вставало, когда бы не было меня
Re[3]: Discriminated unions в TypeScriptr 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.06.16 21:29
Оценка:
Здравствуйте, SergeyT., Вы писали:

VD>>А какое отношение TypeScriptr к дотнету имеет?


ST>Хейлсберг?


Да, смешно. Но автор темы шутки не понял. Надо сюда по Дельфи что-нибудь запостить.

Причем, смешно, что когда тут кто-то код на F# привел, автор ему минус поставил. F# не дотнет. А вот TypeScriptr — да.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Discriminated unions в TypeScriptr 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.06.16 21:31
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Он кстати динамический по природе. Там псевдотипизация на уровне интеллисенсе. Все равно он транслируется в JS.


Логика у тебя отличная. Вот еще Котлин, F#, Nemerle и Java транслируется в JS. Это тоже делает их динамическими?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Discriminated unions в TypeScriptr 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.06.16 21:42
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Serginio1, Вы писали:


S>>Он кстати динамический по природе. Там псевдотипизация на уровне интеллисенсе. Все равно он транслируется в JS.


VD>Логика у тебя отличная. Вот еще Котлин, F#, Nemerle и Java транслируется в JS. Это тоже делает их динамическими?

Котлин нет. Он отдельно существует и кстати понравился. Все эти языки живут отдельно. Ты и C# забыл добавить.
и солнце б утром не вставало, когда бы не было меня
Re[4]: Discriminated unions в TypeScriptr 2.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.06.16 22:22
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Да, смешно. Но автор темы шутки не понял. Надо сюда по Дельфи что-нибудь запостить.


Автор шутку понял, не переживай. Но в каждой шутке ... Новость эта пришла в шарповской рассылке, а попала она туда, скорее всего, как раз потому что автор PR Хейлсберг.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[9]: Discriminated unions в TypeScriptr 2.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.06.16 22:22
Оценка:
Здравствуйте, Serginio1, Вы писали:

AVK>>Ты так троллишь бестолково что ли?

S> Каков вопрос таков и ответ.

Вопрос как раз таки был нормальный. TS никакого отношения к ASP.NET не имеет, абсолютно ортогональная технология. Если у тебя другие сведения — поделись, а не отшучивайся по тупому.

S> На Asp.Net сразу делается и клиент и сервер.


И что?

S>В клиент не входит TS. TS испльзуется только на этапе компиляции.


И что?

S> То есть может быть коровы без молока, но не может быть молоко без коровы.


Вот только и TS может быть без ASP.NET, и ASP.NET без TS.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[6]: Discriminated unions в TypeScriptr 2.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.06.16 22:22
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Логика у тебя отличная. Вот еще Котлин, F#, Nemerle и Java транслируется в JS. Это тоже делает их динамическими?


TS, в отличие от тобой перечисленных, на 100% обратно совместим с JS. Т.е. любой исходник на JS можно переименовать в TS и все будет работать.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[7]: Discriminated unions в TypeScriptr 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.06.16 22:32
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Котлин нет. Он отдельно существует и кстати понравился.


Учи матчасть.

S>Ты и C# забыл добавить.


Ага. И еще 100500 языков.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Discriminated unions в TypeScriptr 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.06.16 22:48
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Автор шутку понял, не переживай. Но в каждой шутке ... Новость эта пришла в шарповской рассылке, а попала она туда, скорее всего, как раз потому что автор PR Хейлсберг.


Ну, ты бы ее хотя бы asp.Net запостил, что ли.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Discriminated unions в TypeScriptr 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.07.16 04:20
Оценка:
Здравствуйте, AndrewVK, Вы писали:

S>> То есть может быть коровы без молока, но не может быть молоко без коровы.


AVK>Вот только и TS может быть без ASP.NET, и ASP.NET без TS.

Я бы с удовольствием использовал его отдельно d .Net. Можно ссылочку?
и солнце б утром не вставало, когда бы не было меня
Re[11]: Discriminated unions в TypeScriptr 2.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.07.16 04:35
Оценка:
Здравствуйте, Serginio1, Вы писали:

AVK>>Вот только и TS может быть без ASP.NET, и ASP.NET без TS.

S> Я бы с удовольствием использовал его отдельно d .Net.

Используй.

S> Можно ссылочку?


Ссылочку на что?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[12]: Discriminated unions в TypeScriptr 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.07.16 04:40
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Serginio1, Вы писали:


AVK>>>Вот только и TS может быть без ASP.NET, и ASP.NET без TS.

S>> Я бы с удовольствием использовал его отдельно d .Net.

AVK>Используй.

Как?
S>> Можно ссылочку?

AVK>Ссылочку на что?

Ссылочку на использование TS как отдельного языка в .Net
Я бы с удовольствием на него перешел с C# в определенных случаях.
и солнце б утром не вставало, когда бы не было меня
Re[13]: Discriminated unions в TypeScriptr 2.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.07.16 19:32
Оценка:
Здравствуйте, Serginio1, Вы писали:

AVK>>Используй.

S> Как?

Обычным образом.

S>>> Можно ссылочку?

AVK>>Ссылочку на что?
S> Ссылочку на использование TS как отдельного языка в .Net

Невозможно дать ссылочку на отсутствие проблем работы без ASP.NET. Вот ссылочку на то, что без ASP.NET никак дать вполне можно.

S>Я бы с удовольствием на него перешел с C# в определенных случаях.


При чем тут C#? C# коммпилируется в IL, TS в JS. Они друг друга не заменяют никак.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[15]: Discriminated unions в TypeScriptr 2.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.07.16 21:21
Оценка:
Здравствуйте, Serginio1, Вы писали:

AVK>>При чем тут C#? C# коммпилируется в IL, TS в JS. Они друг друга не заменяют никак.

S> То есть TS отдельно от Asp.Net не существует?

Существует.

S> И мой тезис о том, что TS интегрирован в ASP.Net верен?


Нет, не верен.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[16]: Discriminated unions в TypeScriptr 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.07.16 21:52
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Serginio1, Вы писали:


AVK>>>При чем тут C#? C# коммпилируется в IL, TS в JS. Они друг друга не заменяют никак.

S>> То есть TS отдельно от Asp.Net не существует?

AVK>Существует.

Да очень информативно. И где именно существует? В вакууме? Ты хоть пример приводи.

Я тебя об этом уже раза 4 спрашиваю.
S>> И мой тезис о том, что TS интегрирован в ASP.Net верен?
AVK>Нет, не верен.
А обосновать?
и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.