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: 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[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[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[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[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 языков.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.