brianc / node-sql

SQL generation for node.js
MIT License
1.05k stars 191 forks source link

Type error in module breaking my build #416

Open patrickbenjamin1 opened 4 years ago

patrickbenjamin1 commented 4 years ago

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.

zzh948498 commented 4 years ago

I had the same problem!

khmseu commented 3 years ago

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.