typescriptLanguage top-level constant

Grammar const typescriptLanguage

TypeScript.

Implementation

const typescriptLanguage = Grammar(
  name: 'typescript',
  aliases: ['ts', 'mts', 'cts'],
  fileExtensions: ['ts', 'mts', 'cts'],
  shebangs: ['ts-node', 'tsx'],
  signatures: [
    r'\b(?:interface|type)\s+[A-Z]\w*\s*(?:<[^>]*>)?\s*[={]',
    r':\s*(?:string|number|boolean|void|any|unknown)\b',
    r'\b(?:private|public|protected|readonly)\s+\w+\s*[:(]',
    r'\bas\s+(?:const|[A-Z]\w*)\b',
  ],
  rules: jsRules,
  repository: {
    ...jsRepository,
    'words': [
      ...jsMemberRules,
      KeywordRule(
        {
          Scopes.keyword: [
            ...jsKeywords,
            'abstract', 'asserts', 'declare', 'enum', 'implements', //
            'infer', 'interface', 'is', 'keyof', 'module', 'namespace',
            'override', 'private', 'protected', 'public', 'readonly',
            'satisfies', 'type', 'unique',
          ],
          Scopes.literal: jsLiterals,
          Scopes.variableLanguage: jsVariables,
          Scopes.typeBuiltin: [
            ...jsBuiltins,
            'any', 'bigint', 'boolean', 'never', 'number', 'object', //
            'Partial', 'Readonly', 'Record', 'string', 'symbol', 'unknown',
          ],
        },
        word: r'(?<![\w$#])#?[A-Za-z_$][\w$]*',
        otherwise: jsWordFallbacks,
      ),
    ],
  },
);