diff --git a/src/php/Models/Types/BuiltinType.php b/src/php/Models/Types/BuiltinType.php index 1474da9df42ff2c1f249a01557dbf271980c7dc5..52872ee6d30cbd11e4a2568a65310a91e2a77fce 100644 --- a/src/php/Models/Types/BuiltinType.php +++ b/src/php/Models/Types/BuiltinType.php @@ -52,15 +52,16 @@ class BuiltinType extends AbstractType case 'number': case 'boolean': return sprintf('%s.toString()', $expr); + case 'null': + case 'undefined': case 'true': case 'false': return sprintf('"%s"', $this->name); case 'Date': return sprintf('%s.toISOString()', $expr); - case 'undefined': - case 'null': case 'never': - return ''; + case 'unknown': + return sprintf('"" /* %s */', $this->name); default: return sprintf('JSON.stringify(%s)', $expr); } @@ -71,6 +72,19 @@ class BuiltinType extends AbstractType */ public function checkType(string $expr, bool $explicit = false): string { - return sprintf('(typeof %s === %s)', $expr, TypescriptHelper::quoteString($this->name)); + switch ($this->name) { + case 'null': + case 'true': + case 'false': + case 'undefined': + return sprintf('(%s === %s)', $expr, $this->name); + case 'unknown': + case 'any': + return 'true'; + case 'Date': + return sprintf('(%s instanceof %s)', $expr, $this->name); + default: + return sprintf('(typeof %s === %s)', $expr, TypescriptHelper::quoteString($this->name)); + } } }