feat(typescript-types): Adapt Get to KeyPaths and KeyPath changes
This commit is contained in:
@@ -1,19 +1,29 @@
|
||||
import type { Get } from '@/get.js'
|
||||
import { expect } from 'tstyche'
|
||||
|
||||
interface Example1 {
|
||||
requiredKey: number
|
||||
optionalKey?: number
|
||||
unknownNonOptionalKey: unknown
|
||||
undefinedNonOptionalKey: undefined
|
||||
interface ExampleObject {
|
||||
nullvalue: null
|
||||
simplevalue: string
|
||||
unknownKey: unknown
|
||||
neverKey: never
|
||||
subkey: {
|
||||
undefinedKey: undefined
|
||||
undefinedOptionalKey?: undefined
|
||||
optionalKey?: string
|
||||
objectKey: {
|
||||
name: string
|
||||
age: number
|
||||
age?: number
|
||||
}
|
||||
optionalObjectKey?: {
|
||||
name: string
|
||||
age?: number
|
||||
}
|
||||
arrayKey: [{ name: string; age: number }, 1]
|
||||
optionalArrayKey?: [{ name: string }, { age?: number }]
|
||||
}
|
||||
|
||||
expect<Get<Example1, 'requiredKey'>>().type.toBe<number>()
|
||||
expect<Get<Example1, 'optionalKey'>>().type.toBe<number | undefined>()
|
||||
expect<Get<Example1, 'subkey.age'>>().type.toBe<number>()
|
||||
expect<Get<Example1, 'unknownNonOptionalKey'>>().type.toBe<unknown>()
|
||||
// type T = any extends never ? true : false
|
||||
// type A = Get<ExampleObject, 'simplevalue'>
|
||||
expect<Get<ExampleObject, 'simplevalue'>>().type.toBe<string>()
|
||||
expect<Get<ExampleObject, 'optionalObjectKey?.name', {}, never>>().type.toBe<string | undefined>()
|
||||
expect<Get<ExampleObject, 'optionalObjectKey?.age?', {}, never>>().type.toBe<number | undefined>()
|
||||
expect<Get<ExampleObject, 'optionalArrayKey?.0.name', {}, never>>().type.toBe<string | undefined>()
|
||||
|
||||
Reference in New Issue
Block a user