SIGN IN SIGN UP
immerjs / immer UNCLAIMED

Create the next immutable state by mutating the current one

28907 0 0 JavaScript
2019-04-16 15:20:34 -04:00
import {assert, _} from "spec.ts"
2019-12-19 17:44:18 +00:00
import {Immutable} from "../src/index"
test("types are ok", () => {
// array in tuple
{
let val = _ as Immutable<[string[], 1]>
assert(val, _ as readonly [ReadonlyArray<string>, 1])
}
// tuple in array
{
let val = _ as Immutable<[string, 1][]>
assert(val, _ as ReadonlyArray<readonly [string, 1]>)
}
// tuple in tuple
{
let val = _ as Immutable<[[string, 1], 1]>
assert(val, _ as readonly [readonly [string, 1], 1])
}
// array in array
{
let val = _ as Immutable<string[][]>
assert(val, _ as ReadonlyArray<ReadonlyArray<string>>)
}
// tuple in object
{
let val = _ as Immutable<{a: [string, 1]}>
assert(val, _ as {readonly a: readonly [string, 1]})
}
// object in tuple
{
let val = _ as Immutable<[{a: string}, 1]>
assert(val, _ as readonly [{readonly a: string}, 1])
}
// array in object
{
let val = _ as Immutable<{a: string[]}>
assert(val, _ as {readonly a: ReadonlyArray<string>})
}
// object in array
{
let val = _ as Immutable<Array<{a: string}>>
assert(val, _ as ReadonlyArray<{readonly a: string}>)
}
// object in object
{
let val = _ as Immutable<{a: {b: string}}>
assert(val, _ as {readonly a: {readonly b: string}})
}
expect(true).toBe(true)
})