File: stringCompletionsFromGenericConditionalTypesUsingTemplateLiteralTypes.ts

package info (click to toggle)
node-typescript 5.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 497,488 kB
  • sloc: javascript: 2,107,274; makefile: 6; sh: 1
file content (31 lines) | stat: -rw-r--r-- 941 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/// <reference path="fourslash.ts" />

// @strict: true
//// type keyword = "foo" | "bar" | "baz"
//// 
//// type validateString<s> = s extends keyword
////     ? s
////     : s extends `${infer left extends keyword}|${infer right}`
////     ? right extends keyword
////         ? s
////         : `${left}|${keyword}`
////     : keyword
////
//// type isUnknown<t> = unknown extends t
////     ? [t] extends [{}]
////         ? false
////         : true
////     : false
////
//// type validate<def> = def extends string
////     ? validateString<def>
////     : isUnknown<def> extends true
////     ? keyword
////     : {
////           [k in keyof def]: validate<def[k]>
////       }
//// const parse = <def>(def: validate<def>) => def
//// const shallowExpression = parse("foo|/*ts*/")
//// const nestedExpression = parse({ prop: "foo|/*ts2*/" })

verify.completions({ marker: ["ts", "ts2"], exact: ["foo|foo", "foo|bar", "foo|baz"] });