Как выполнить проверку массива (например, Array.isArray()
) с массивом только для чтения (ReadonlyArray
)?
Как пример:
type ReadonlyArrayTest = ReadonlyArray<string> | string | undefined;
let readonlyArrayTest: ReadonlyArrayTest;
if (readonlyArrayTest && !Array.isArray(readonlyArrayTest)) {
// Here I expect `readonlyArrayTest` to be a string
// but the TypeScript compiler thinks it's following:
// let readonlyArrayTest: string | readonly string[]
}
С обычным массивом TypeScriptКомпилятор правильно распознает, что это должно быть строкой внутри условия if.