programing

특정 문자로 시작해야 하는 스크립트 문자열 유형

lastmoon 2023. 6. 26. 21:35
반응형

특정 문자로 시작해야 하는 스크립트 문자열 유형

TypeScript에서는 다음과 같은 특정 문자열을 적용할 수 있습니다.

const myStrings = ['foo', 'bar', 'baz'] as const;
type MyStringTypes = typeof myStrings[number];

하지만, 제가 필요로 하는 것은 제 마지막 문자열의 첫 번째 문자만 시행하는 것입니다.

예를 들어, 유형을 만들고자 합니다.MyPrefixTypes)와 같은 것으로'prefix1','prefix2', ...,'prefixN'그 다음에 다른 문자가 나옵니다.

이것을 사용하면, 저는 문자열이 정확한지 아닌지 확인할 수 있을 것입니다.

예:

const foo: MyPrefixTypes = 'prefix1blablabla'; // OK
const bar: MyPrefixTypes = 'incorrectprefixblablabla'; // NOT OK

TypeScript 4.1부터는 템플릿 리터럴 형식을 사용할 수 있습니다.

type StartsWithPrefix = `prefix${string}`;

이는 유형 조합에도 적용됩니다.

// `abc${string}` | `def${string}`
type UnionExample = `${'abc' | 'def'}${string}`;

// For your example:
type MyPrefixTypes = `${MyStringTypes}${string}`;

const ok: UnionExample = 'abc123';
const alsoOk: UnionExample = 'def123';
const notOk: UnionExample = 'abdxyz';

// Note that a string consisting of just the prefix is allowed
// (because '' is assignable to string so
// `${SomePrefix}${''}` == SomePrefix is valid)
const ok1: MyPrefixTypes = 'foo'
const ok2: MyPrefixTypes = 'barxyz'
const ok3: MyPrefixTypes = 'bazabc'
const notOk1: MyPrefixTypes = 'quxfoo'

도우미 유형을 정의할 수도 있습니다.

type WithPrefix<T extends string> = `${T}${string}`;

type StartsWithPrefix = WithPrefix<'prefix'>;
type UnionExample = WithPrefix<'abc' | 'def'>;
type MyPrefixTypes = WithPrefix<MyStringTypes>;

놀이터 링크


관련:

언급URL : https://stackoverflow.com/questions/68846567/typescript-string-type-that-must-start-with-specific-characters

반응형