In TypeScript on VS Code I have the following type:
export type PgInheritableTableWithColumns<
T extends TableConfig
> = PgTableWithColumns<T> & {
extend<
TNewTableName extends string,
TNewColumnsMap extends Record<string, PgColumnBuilderBase>
> (
name: TNewTableName,
columns: TNewColumnsMap,
extraConfig?: (self: BuildExtraConfigColumns<TNewTableName, TNewColumnsMap, 'pg'>) => PgTableExtraConfigValue[]
): PgInheritableTableWithColumns<{
name: TNewTableName;
schema: T['schema'];
columns: BuildColumns<TNewTableName, TNewColumnsMap, 'pg'> & T['columns'];
dialect: 'pg';
}>;
extend<
TNewTableName extends string,
TNewColumnsMap extends Record<string, PgColumnBuilderBase>
>(
name: TNewTableName,
columns: (columnTypes: PgColumnsBuilders) => TNewColumnsMap,
extraConfig?: (self: BuildExtraConfigColumns<TNewTableName, TNewColumnsMap, 'pg'>) => PgTableExtraConfigValue[]
): PgInheritableTableWithColumns<{
name: TNewTableName;
schema: T['schema'];
columns: BuildColumns<TNewTableName, TNewColumnsMap, 'pg'> & T['columns'];
dialect: 'pg';
}>;
};
Why does it mess up my syntax highlighting in the rest of the file?
Messed up syntax highlighting:
Correct highlighting:
By splitting up the type into type + interface like
interface ExtendFn<T extends TableConfig> {
extend<
TNewTableName extends string,
TNewColumnsMap extends Record<string, PgColumnBuilderBase>
>(
name: TNewTableName,
columns: TNewColumnsMap,
extraConfig?: (self: BuildExtraConfigColumns<TNewTableName, TNewColumnsMap, 'pg'>) => PgTableExtraConfigValue[]
): PgInheritableTableWithColumns<{
name: TNewTableName;
schema: T['schema'];
columns: BuildColumns<TNewTableName, TNewColumnsMap, 'pg'> & T['columns'];
dialect: 'pg';
}>;
extend<
TNewTableName extends string,
TNewColumnsMap extends Record<string, PgColumnBuilderBase>
>(
name: TNewTableName,
columns: (columnTypes: PgColumnsBuilders) => TNewColumnsMap,
extraConfig?: (self: BuildExtraConfigColumns<TNewTableName, TNewColumnsMap, 'pg'>) => PgTableExtraConfigValue[]
): PgInheritableTableWithColumns<{
name: TNewTableName;
schema: T['schema'];
columns: BuildColumns<TNewTableName, TNewColumnsMap, 'pg'> & T['columns'];
dialect: 'pg';
}>;
}
export type PgInheritableTableWithColumns<
T extends TableConfig
> = PgTableWithColumns<T> & ExtendFn<T>;
The highlighting goes back to normal. Is it a VS Code bug?


extendsup to and including the opening parentheses on a single line, the syntax highlighting seems to work. Both:extend<TNewTableName extends string, TNewColumnsMap extends Record<string, PgColumnBuilderBase>>(