Don't try to add an implicit undefined for mapped properties outside of strictNullChecks (#60393)

This commit is contained in:
Mateusz Burzyński
2024-12-19 20:47:26 +01:00
committed by GitHub
parent 0dda037f9f
commit 12e205b1e9
17 changed files with 721 additions and 1 deletions

View File

@@ -0,0 +1,30 @@
// @strictNullChecks: false
// @declaration: true
// @emitDeclarationOnly: true
// @filename: createApi.ts
type Id<T> = {
[K in keyof T]: T[K];
} & {};
export declare function createApi<Definitions>(_: { endpoints: Definitions }): {
[K in keyof Definitions as `use${Capitalize<K & string>}Query`]: () => Id<{
status: "uninitialized";
originalArgs?: undefined;
}>;
};
// @filename: index.ts
import { createApi } from "./createApi";
const slice = createApi({
endpoints: {
test: {
url: `/user`,
},
},
});
export const { useTestQuery } = slice;

View File

@@ -0,0 +1,30 @@
// @strictNullChecks: false
// @declaration: true
// @emitDeclarationOnly: true
// @filename: createApi.ts
type Id<T> = {
[K in keyof T]: T[K];
} & {};
export declare function createApi<Definitions>(_: { endpoints: Definitions }): {
[K in keyof Definitions as `use${Capitalize<K & string>}Query`]: () => Id<{
status: "uninitialized";
originalArgs?: any[];
}>;
};
// @filename: index.ts
import { createApi } from "./createApi";
const slice = createApi({
endpoints: {
test: {
url: `/user`,
},
},
});
export const { useTestQuery } = slice;

View File

@@ -0,0 +1,30 @@
// @strictNullChecks: false
// @declaration: true
// @emitDeclarationOnly: true
// @filename: createApi.ts
type Id<T> = {
[K in keyof T]: T[K];
} & {};
export declare function createApi<Definitions>(_: { endpoints: Definitions }): {
[K in keyof Definitions as `use${Capitalize<K & string>}Query`]: () => Id<{
status: "uninitialized";
originalArgs?: never;
}>;
};
// @filename: index.ts
import { createApi } from "./createApi";
const slice = createApi({
endpoints: {
test: {
url: `/user`,
},
},
});
export const { useTestQuery } = slice;

View File

@@ -0,0 +1,10 @@
// @strictNullChecks: false
// @declaration: true
// @emitDeclarationOnly: true
type InputType = { enable_member_receipts?: boolean };
type AsEmptyObject<T> = { [K in keyof T]?: undefined };
export const test = {
...({} as AsEmptyObject<InputType>),
};