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>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
AVK>>>Какая связь между отладкой в студии и ASP.NET? S>> Думаю по Tcp/Ip
AVK>Ты так троллишь бестолково что ли?
Каков вопрос таков и ответ. На Asp.Net сразу делается и клиент и сервер.
В клиент не входит TS. TS испльзуется только на этапе компиляции.
То есть может быть коровы без молока, но не может быть молоко без коровы.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, AndrewVK, Вы писали:
AVK>TS, в отличие от тобой перечисленных, на 100% обратно совместим с JS. Т.е. любой исходник на JS можно переименовать в TS и все будет работать.
Это ни о чем не говорит. В Шарпе тоже есть dynamic, а в Nemerle late, но от этого они динамически-типизированными не становятся. Наличие статической типизации — это доминантный признак .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
AVK>Невозможно дать ссылочку на отсутствие проблем работы без ASP.NET. Вот ссылочку на то, что без ASP.NET никак дать вполне можно.
S>>Я бы с удовольствием на него перешел с C# в определенных случаях.
AVK>При чем тут C#? C# коммпилируется в IL, TS в JS. Они друг друга не заменяют никак.
То есть TS отдельно от Asp.Net не существует? И мой тезис о том, что TS интегрирован в ASP.Net верен?
Ладно я не прав.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Don Reba, Вы писали:
DR>Здравствуйте, Serginio1, Вы писали:
S>> Да очень информативно. И где именно существует? В вакууме? Ты хоть пример приводи.
DR>Добавляешь в проект файл на TypeScript, компилируешь, получаешь Javascript, делаешь с ним что угодно. Asp.Net в процессе никак не фигурирует.
Спасибо. Просто отдельно от asp.Net не добавлял. Надо будет попробовать.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, AndrewVK, Вы писали:
AVK>>https://github.com/Microsoft/TypeScript/pull/9163
VD>А какое отношение TypeScriptr к дотнету имеет?
Он точно имеет отношение к asp.Net. А там TypeScript интегрирован.
А asp.Net это дотнет. Так, что всё логично
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
S>> Он точно имеет отношение к asp.Net. А там TypeScript интегрирован.
AVK>Это каким же образом он туда интегрирован?
Таким же как и JavaScript. отладка в студии.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
AVK>>>Это каким же образом он туда интегрирован? S>> Таким же как и JavaScript. отладка в студии.
AVK>Какая связь между отладкой в студии и ASP.NET?
Думаю по Tcp/Ip
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> Он точно имеет отношение к asp.Net. А там TypeScript интегрирован. S>А asp.Net это дотнет. Так, что всё логично
Для asp.Net у нас, вроде, отдельный форум. Да и к asp.Net этот язык имеет тоже опосредованное отношение. Чисто броузерный язык. Только не ясно куда его тнести. Тут народ его в динамически-типизированные хочет отправить, но он ведь не динамический.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Serginio1, Вы писали:
S>> Он точно имеет отношение к asp.Net. А там TypeScript интегрирован. S>>А asp.Net это дотнет. Так, что всё логично
VD>Для asp.Net у нас, вроде, отдельный форум. Да и к asp.Net этот язык имеет тоже опосредованное отношение. Чисто броузерный язык. Только не ясно куда его тнести. Тут народ его в динамически-типизированные хочет отправить, но он ведь не динамический.
Он пока не браузерный язык. Когда будет, тогда он и не будет иметь отношение.
Он кстати динамический по природе. Там псевдотипизация на уровне интеллисенсе. Все равно он транслируется в JS.
Хотя возможно я уже отстал от жизни
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Serginio1, Вы писали:
S>>Он кстати динамический по природе. Там псевдотипизация на уровне интеллисенсе. Все равно он транслируется в JS.
VD>Логика у тебя отличная. Вот еще Котлин, F#, Nemerle и Java транслируется в JS. Это тоже делает их динамическими?
Котлин нет. Он отдельно существует и кстати понравился. Все эти языки живут отдельно. Ты и C# забыл добавить.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, VladD2, Вы писали:
VD>Да, смешно. Но автор темы шутки не понял. Надо сюда по Дельфи что-нибудь запостить.
Автор шутку понял, не переживай. Но в каждой шутке ... Новость эта пришла в шарповской рассылке, а попала она туда, скорее всего, как раз потому что автор PR Хейлсберг.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, 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>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Автор шутку понял, не переживай. Но в каждой шутке ... Новость эта пришла в шарповской рассылке, а попала она туда, скорее всего, как раз потому что автор PR Хейлсберг.
Ну, ты бы ее хотя бы asp.Net запостил, что ли.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
S>> То есть может быть коровы без молока, но не может быть молоко без коровы.
AVK>Вот только и TS может быть без ASP.NET, и ASP.NET без TS.
Я бы с удовольствием использовал его отдельно d .Net. Можно ссылочку?
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, 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>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
AVK>>>Вот только и TS может быть без ASP.NET, и ASP.NET без TS. S>> Я бы с удовольствием использовал его отдельно d .Net.
AVK>Используй.
Как? S>> Можно ссылочку?
AVK>Ссылочку на что?
Ссылочку на использование TS как отдельного языка в .Net
Я бы с удовольствием на него перешел с C# в определенных случаях.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, 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>>
Здравствуйте, 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>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
AVK>>>При чем тут C#? C# коммпилируется в IL, TS в JS. Они друг друга не заменяют никак. S>> То есть TS отдельно от Asp.Net не существует?
AVK>Существует.
Да очень информативно. И где именно существует? В вакууме? Ты хоть пример приводи.
Я тебя об этом уже раза 4 спрашиваю. S>> И мой тезис о том, что TS интегрирован в ASP.Net верен? AVK>Нет, не верен.
А обосновать?
и солнце б утром не вставало, когда бы не было меня