- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
class C {
_length: number;
constructor() {
this._length = 10;
}
get length() {
return this._length;
}
set length(value: number) {
this._length = value;
}
}
function main() {
const c = new C();
print(c.length);
c.length = 20;
print(c.length);
delete c;
print("done.");
}
и дампик https://pastebin.com/hhZLyDBw в LLVM IR и LLVM MLIR https://pastebin.com/0W5H2rJ4
А через c['length'] эти свойства доступны? Или в TS эту фичу спрятали?
оно аботает, посто типизиованное
Хуяссе, а как вы там типизированную гетерогенную мапу запилили? Что за ёбаная магия?
Тип возвращаемого значения зависит от значения ключа? Да у вас там coq практически...
Опровергаю.
Такая питушня с оптимизациями и проверки типов могут поднять ИТ до небес.
Да ты сам проверь
А Борманд хотел спросить, наверно, что будет, если, скажем, запихнуть Foo['length'] в add : (number, number) -> number.
ни в JS, ни в питоне стат типизация не проверяется без спец средств.
Борманд имел ввиду, что значение мапы зависит от ключа.
В C#, Java или C++ такое выразить не просто
Ну что в жс такая же питушня сработает.
И что выражение на первый взгляд выглядит так, как будто в нём никому нет дела до проверки типов.
Тип значения мапы зависит от значения ключа. В крестах такое вообще не выразить, разве что для кейсов, когда значения ключей заранее известны. Ну в общем-то и в тс точно так же, как мы выяснили ниже.
есть discriminated unions
докажешь что строка может принимать значения только из множества ключей объекта - будет работать, тип значения - union type из всех возможных значений
Ну это, по сути, подобие енума получится, а не "строка"? Обычную строку, которая мне от юзера пришла, туда уже никак не просунуть?
ну или в `else` если в ифе отрицание
или вообще если в ифе отрицание и там гарантирован return
или вообще в свитче (енам по значениям точно разберет, про функцию не уверен)
Круто сделали.
очень, угу
Вообще даже обидно, что скриптоблядям вебовским такой годный язык достался
https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/discriminated-unions
А тьфу, это F#.
заменишь девочку на ротоёба, и язык поменяешь
императивомразь!
Боюсь, что не прокатит т.к. вся архитектура уже заточена под какие-нибудь реактивные паттерны да всякие кобенаторы, которые в шарпике будут выглядеть как говно. Да и старый код прочитать будет некому.
Так что интероп здесь в одну сторону.
вот бизнес порадуется! будет полное nevmerle!
если бы я писал под .NET плотно, то вероятно бы выучил..
жаль конечно, что в стандартной библиотеке нихуя нет
Массив реализует интерфейс очереди
>связных списков, priority queue
Задачи с литкода рекомендую всё-таки решать на питоне или джаве
не очень производительно
>Задачи с литкода рекомендую всё-таки решать на питоне или джаве
почему, кстати?
Какая производительность )))
>почему, кстати?
1) там все перечисленное JaneBurt есть
2) интервьюер на алгоритмической секции с большей вероятностью знает их чем жс
Ну priority queue -- это всё-таки практическая штука, а не хрень для лаб.
Если я буду перманентно срать в голову массиву размером в гигабайт, то могу и соснуть
С другой стороны, современные процы умеют неплохо двигать последовательные куски данных
А вставка/удаление в начало работает за O(n) . У труЪевой очереди ето работает за O(1).
> Задачи с литкода рекомендую всё-таки решать на питоне или джаве
Я не думаю, что в том же Яндексе алгоритмическую секцию дадут решать на каком угодно ЯПе. Раз я подаюсь на позицию с ЖС, мне надо писать на ЖС.
Какой перформанс )))
>Раз я подаюсь на позицию с ЖС, мне надо писать на ЖС.
Мне это кажется добровольным усложнением жизни но флаг тебе в руки
JSер не обязан знать, чем массив отличается от листа, а O(1) от O(n)
Глистов тоже нет только деревья
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
мы вам этсамое
Массив это Uint8Array он вроде обязан выделить сплошной кусок памяти
А array не обязан
охуясе, то есть доступ к Array[42] не за O(N)?!
у вас там в джсе всё такое?
Ты никогда не задумывался как работает индексация Array если в объекте ключи могут быть только строками или символами?
а сам эррей массивом
ну если он хештаблой, то как же тогда перечислять его?
https://www.php.net/manual/en/language.types.array.php
ну назовите лист тада, або сиквенс
буде Element implicitly has an 'any' type because expression of type 'string' can't be used to index type
А что будет, если я в это any засуну "42"? Мне не дадут это сделать в компайлтайме или рантайме? Или просто читатели потом охуеют от разрушенных инвариантов?
все сломаешь, и сам виноват
тайпскрипт НЕ ВЛИЯЕТ НА РАНТАЙМ
>зависимыетипы
там тока так
https://www.typescriptlang.org/docs/handbook/2/mapped-types.html
* Создан продукт с 1 фичей - очень интересно.
* Добавлена фича - ну ладно.
* Стало 3 фичи - зачем? Ты просто досчитал до трёх. Расскажи, когда будет скачок.
* Стало 10 фич - интересно
* Стало 100 фич - ну ладно
* Стало 1000 фич - зачем? Ты просто досчитал до трёх по логарифмической шкале. Расскажи, когда будет скачок.
* Код использует вся страна - интересно
* Код использует вся планета - ну ладно
* Код использует вся галактика - зачем? Ты просто досчитал до трёх по вселенской шкале. Расскажи, когда будет скачок.
Так что штука крутая, но из-за особенностей восприятия она будет всё больше и больше недооцениваться.