使用在Baz实现中填充的快速修复:x1a3b1x我期望的结果是:x1a4b1x/cc @mjbvz
flmtquvp1#
看起来我们把与符号类型关联的别名的信息丢弃了,作为getTypeOfSymbol的一部分,所以我们需要修改它或者创建一个辅助程序,在可能的情况下尝试检索别名。
getTypeOfSymbol
xmjla07d2#
我最近遇到了这个问题。"Implement interface"快速修复扩展了我的类型别名,这最终变得非常长。它还扩展了泛型方法的类型约束。
interface MyInterface { myProp: string, myProp2: string, } type FooInterface = MyInterface & { myProp: "foo" }; type Foo2Interface = MyInterface & { myProp2: "foo2" }; type Identity<T> = T; type SomeMappedType<T> = Identity<{ [k in keyof T] : [T[k]] }> interface Bar { bar<T extends FooInterface & Foo2Interface>(t: T, m : SomeMappedType<T>): void; } class Impl implements Bar { bar<T extends MyInterface&{ myProp: "foo"; }&{ myProp2: "foo2"; }>(t: T,m: { [k in keyof T]: [T[k]]; }): void { throw new Error("Method not implemented."); } }
Playground对于我的用例,我期望得到的是:
replaceMany<TableT extends InsertableTable & DeletableTable> ( table : TableT, rows : readonly [BuiltInInsertRow<TableT>, ...BuiltInInsertRow<TableT>[]] ) : Promise<ReplaceManyResult>;
但实际上得到的是:
replaceMany<TableT extends tsql.ITable<tsql.TableData> & {insertEnabled: true;} & {deleteEnabled: true;}>(table: TableT, rows: readonly [{readonly [columnAlias in Exclude<TableT["columns"] extends tsql.ColumnMap ? Extract<keyof TableT["columns"], string> : never, TableT["generatedColumns"][number] | TableT["nullableColumns"][number] | TableT["explicitDefaultValueColumns"][number] | TableT["autoIncrement"]>]: tsql.BuiltInExpr_NonCorrelated<ReturnType<TableT["columns"][columnAlias]["mapper"]>>;} & {readonly [columnAlias in tsql.TableUtil.OptionalColumnAlias<TableT>]?: tsql.BuiltInExpr_NonCorrelatedOrUndefined<ReturnType<TableT["columns"][columnAlias]["mapper"]>>;}, ...({readonly [columnAlias in Exclude<TableT["columns"] extends tsql.ColumnMap ? Extract<keyof TableT["columns"], string> : never, TableT["generatedColumns"][number] | TableT["nullableColumns"][number] | TableT["explicitDefaultValueColumns"][number] | TableT["autoIncrement"]>]: tsql.BuiltInExpr_NonCorrelated<ReturnType<TableT["columns"][columnAlias]["mapper"]>>;} & {readonly [columnAlias in tsql.TableUtil.OptionalColumnAlias<TableT>]?: tsql.BuiltInExpr_NonCorrelatedOrUndefined<ReturnType<TableT["columns"][columnAlias]["mapper"]>>;})[]]): Promise<tsql.ReplaceManyResult> {
ttvkxqim3#
看起来@Tyriar的原始示例在TS 3.7.5中已固定@AnyhowStep的示例仍然扩展了类型
3条答案
按热度按时间flmtquvp1#
看起来我们把与符号类型关联的别名的信息丢弃了,作为
getTypeOfSymbol
的一部分,所以我们需要修改它或者创建一个辅助程序,在可能的情况下尝试检索别名。xmjla07d2#
我最近遇到了这个问题。"Implement interface"快速修复扩展了我的类型别名,这最终变得非常长。它还扩展了泛型方法的类型约束。
Playground
对于我的用例,我期望得到的是:
但实际上得到的是:
ttvkxqim3#
看起来@Tyriar的原始示例在TS 3.7.5中已固定
@AnyhowStep的示例仍然扩展了类型