идеи? https://www.typescriptlang.org/play?#code/C4TwDgpgBAcg9gOwKIFsygIICcsEMQA8AKgHxQC8UWEuAJogDYhQDaRANFAHQ9EsC6-ANwBYAFDiAxogDOwKLhwAuKNjyEEAVxQAjCFjKUBosdIRyoCGivjI0mHPgJbd+w6wCMw8eNCQoRACqAAoAMkgUrC56WN5iDBDywJpgCSpBYRFGXibiAPR5UAACwDIAtBAAHpCSwBU4cFgqAPIA0lKy8iwAjpwA7vyRyakQuWIFxaUV1RC19ViNKsB9cFAA-FBKABRbHeZdiBCcy3CDlFa4Y7SzDIrQAGaaCLUAlohQkgAWswDWW4pNWCIVDoEBqJzRNwAShUADc4C9aGNHs9gG8EFAXjJbCCHOpiCQtpUVNQ6IxmHx+DCoJVMTIgXZQeDCKQoABvcRQKiJTRYDGVLgJBAAc2AnygZAADCYAL4+MQve5bLE4+xgxwgLYXKFQ9mcqATErlKo1Or6BZYfUXLhgTQyT5bDxQkxcr6-LU0Z3iGVQCAMGTQDliV3fSR-bWy+WK5XY4Fq5n-HA6vXBg2FI3TU3zRZcgDqAAkAJqWbQxARQABkDNx6vxkIM631AJtdodTqEUH1brDiawXrEPr9AZTXMNUxNszNDUBbS7ob+AP7cokYiAA
А каких именно различий хочется добиться в поведении NonEmptyArray<T> и ReadonlyArray<T>? Ведь обращение к первому элементу в обоих случаях вернёт T, а не T | undefined (если не использовать новое свойство noUncheckedIndexedAccess), а тайп-гвард может только сужать тип проверяемого значения: play.
Спасибо. Думал что `noUncheckedIndexedAccess` в 4.1 включен по умолчанию, оказалось нет. Хотелось бы именно чтобы TG работал по другому. Но кажется придется довольствоваться парсером `tryConvertToNonEmptyArray`. Комбинация флажка и парсера работает приемлемо с type NonEmptyArray<T> = readonly [T, ...T[]] & { readonly length: number };
Обсуждают сегодня