brianc/node-sql

Type error in module breaking my build

Opened this issue · 2 comments

Just switched over to using this on a new project, and there's a typescript error coming out of this module, from lib/types.d.ts.

	interface TableDefinition<Name extends string, Row> {
		name: Name;
		schema: string;
                 // FROM THIS LINE
		columns: {[CName in keyof Row]: ColumnDefinition<CName, Row[CName]>};
		dialect?: SQLDialects;
		isTemporary?: boolean;
		foreignKeys?: {
			table: string,
			columns: (keyof Row)[],
			refColumns: string[],
			onDelete?: 'restrict' | 'cascade' | 'no action' | 'set null' | 'set default';
			onUpdate?: 'restrict' | 'cascade' | 'no action' | 'set null' | 'set default';
		}
	}

as that keyof is inferred as 'string' | 'number' | 'symbol', and ColumnDefinition is expecting just a string for that generic.

I can solving it temporarily by telling typescript to ignore errors in node_modules, but that's not ideal.

I had the same problem!

The line should be
columns: {[CName in Extract< keyof Row, string >]: ColumnDefinition<CName, Row[CName]>};
That was a breaking change in Typescript some time in the 3.8/3.9 versions.