Bug Report
π Search Terms
conditional, generic
π Version & Regression Information
03/12/2022
- This is a crash
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about common bugs that aren't bugs
β― Playground Link
Playground link with relevant code
π» Code
type Base64Data = FileReader['result'];
// fill-in for actual functions
function base64ToFile (x: any) { return new File([], ''); }
function fileModifier (y: File) { return new Promise<Blob>(res => res('' as unknown as Blob)); }
export function downsizeImageFile<T extends boolean = false>(
imgFile: File,
preserveBase64?: T,
maxSize = 640
): Promise<T extends true ? Base64Data : File> {
return new Promise(async resolve => {
const resizedBlob = await fileModifier(imgFile);
const reader = new FileReader();
reader.readAsDataURL(resizedBlob);
reader.onloadend = () => {
resolve(preserveBase64 ? reader.result : base64ToFile(base64file)); // problem: the correct type cannot be inferred from the conditional statement
};
});
}
export async function downsizeImage<T extends boolean = false>(
base64Img: Base64Data,
preserveBase64?: T,
maxSize = 640
): Promise<T extends true ? Base64Data : File> {
return downsizeImageFile(base64ToFile(base64Img), preserveBase64, maxSize);
}
π Actual behavior
The promise resolution type is not inferred correctly from the conditional statement.
π Expected behavior
The promise resolution type must be Base64Data if the preserveBase64 argument is true, otherwise it must be File
Bug Report
π Search Terms
conditional, generic
π Version & Regression Information
03/12/2022
β― Playground Link
Playground link with relevant code
π» Code
π Actual behavior
The promise resolution type is not inferred correctly from the conditional statement.
π Expected behavior
The promise resolution type must be
Base64Dataif thepreserveBase64argument istrue, otherwise it must beFile