typia
Version:
Superfast runtime validators with only one line
22 lines (18 loc) • 606 B
text/typescript
import ts from "typescript";
import { ExpressionFactory } from "../../factories/ExpressionFactory";
/**
* @internal
*/
export const check_native = (type: string) => (input: ts.Expression) => {
const instanceOf = ExpressionFactory.isInstanceOf(type)(input);
return ATOMIC_LIKE.has(type)
? ts.factory.createLogicalOr(
ts.factory.createStrictEquality(
ts.factory.createStringLiteral(type.toLowerCase()),
ts.factory.createTypeOfExpression(input),
),
instanceOf,
)
: instanceOf;
};
const ATOMIC_LIKE = new Set(["Boolean", "Number", "String"]);