想象一下这样的场景:
type SpecificString = StringThatIsSixCharsLongAndAlphaNumeric;
const myFirstSpecificString: SpecificString = '7kj4lj'; // all good
const mySecondSpecificString: SpecificString = '_kj4lj'; // BUILD ERROR
const myThirdSpecificString: SpecificString = 'kj4lj'; // ANOTHER BUILD ERROR如何实现这一点(如果可以实现的话)?请给我。ty
发布于 2021-11-09 12:51:47
正如Yossarian船长所说,TypeScript不能做到这一点,但是可以通过使用type predicate来实现一种变通方法。在上面给定的SpecificString情况下,可以这样说:
type SpecificString = string;
const isSpecificString = (value: any): value is SpecificString => {
return value.length === 6 && value.match(/^[0-9A-Za-z]+$/) !== null
};
const isFirst = isSpecificString('7kj4lj'); // true
const isSecond = isSpecificString('_kj4lj'); // false
const isThird = isSpecificString('kj4lj'); // false当然,需要注意的是,这发生在运行时,而不是编译时,而是¯\_(ツ)_/¯
https://stackoverflow.com/questions/69433650
复制相似问题