-
-
Notifications
You must be signed in to change notification settings - Fork 184
Closed
Labels
Description
When all:
Foois an interface from extendingArrayorReadonlyArray- An object
barhas a property with type Foo | undefined - Optional chaining used to array-index
Foo - ...after a property access to
bar
Then, the transpiled lua does not get +1 on the array indexing.
interface Foo extends Array<number> {}
const b: {arr?: Foo} = {arr:[1,2]}
// incorrectly prints 1
print(b.arr?.[1])
const arr: Foo | undefined = b.arr
print(arr?.[1])
// all correctly prints 2
print(b.arr![1])
const arr2 : Foo | undefined = [1,2]
print(arr2?.[1])
const c: {arr?: number[]} = {arr:[1,2]}
print(c.arr?.[1])
const d: {arr: Foo} = {arr:[1,2]}
print(c.arr?.[1])TSTL v1.28.1
I'm amazed and annoyed how many stars had to align to encounter this bug, and that it can't be more miminal.
Reactions are currently unavailable