feat(common): stricter types for SlicePipe (#30156)
Adds overloads to the `transform` methods of `SlicePipe`, to have better types than `any` for `value` and `any` as a return. With this commit, using `slice` in an `ngFor` still allow to type-check the content of the `ngFor` with `fullTemplateTypeCheck` enabled in Ivy: <div *ngFor="let user of users | slice:0:2">{{ user.typo }}</div> | `typo` does not exist on type `UserModel` whereas it is currently not catched (as the return of `slice` is `any`) neither in VE nor in Ivy. BREAKING CHANGE `SlicePipe` now only accepts an array of values, a string, null or undefined. This was already the case in practice, and it still throws at runtime if another type is given. But it is now a compilation error to try to call it with an unsupported type. PR Close #30156
This commit is contained in:
5
tools/public_api_guard/common/common.d.ts
vendored
5
tools/public_api_guard/common/common.d.ts
vendored
@ -410,7 +410,10 @@ export interface PopStateEvent {
|
||||
export declare function registerLocaleData(data: any, localeId?: string | any, extraData?: any): void;
|
||||
|
||||
export declare class SlicePipe implements PipeTransform {
|
||||
transform(value: any, start: number, end?: number): any;
|
||||
transform<T>(value: ReadonlyArray<T>, start: number, end?: number): Array<T>;
|
||||
transform(value: string, start: number, end?: number): string;
|
||||
transform(value: null, start: number, end?: number): null;
|
||||
transform(value: undefined, start: number, end?: number): undefined;
|
||||
}
|
||||
|
||||
export declare type Time = {
|
||||
|
Reference in New Issue
Block a user