fix(common): correct and simplify typing of I18nPluralPipe (#37447)
I18nPluralPipe can actually accept `null` and `undefined` (which are convenient for composing it with the async pipe), but it is currently typed to only accept `number`. PR Close #37447
This commit is contained in:
parent
7b2aac97df
commit
3b919ef10f
|
@ -110,7 +110,7 @@ export declare class HashLocationStrategy extends LocationStrategy {
|
||||||
|
|
||||||
export declare class I18nPluralPipe implements PipeTransform {
|
export declare class I18nPluralPipe implements PipeTransform {
|
||||||
constructor(_localization: NgLocalization);
|
constructor(_localization: NgLocalization);
|
||||||
transform(value: number, pluralMap: {
|
transform(value: number | null | undefined, pluralMap: {
|
||||||
[count: string]: string;
|
[count: string]: string;
|
||||||
}, locale?: string): string;
|
}, locale?: string): string;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,8 @@ export class I18nPluralPipe implements PipeTransform {
|
||||||
* @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by
|
* @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by
|
||||||
* default).
|
* default).
|
||||||
*/
|
*/
|
||||||
transform(value: number, pluralMap: {[count: string]: string}, locale?: string): string {
|
transform(value: number|null|undefined, pluralMap: {[count: string]: string}, locale?: string):
|
||||||
|
string {
|
||||||
if (value == null) return '';
|
if (value == null) return '';
|
||||||
|
|
||||||
if (typeof pluralMap !== 'object' || pluralMap === null) {
|
if (typeof pluralMap !== 'object' || pluralMap === null) {
|
||||||
|
|
|
@ -54,12 +54,17 @@ import {JitReflector} from '@angular/platform-browser-dynamic/src/compiler_refle
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should use "" if value is undefined', () => {
|
it('should use "" if value is undefined', () => {
|
||||||
const val = pipe.transform(void (0) as any, mapping);
|
const val = pipe.transform(undefined, mapping);
|
||||||
|
expect(val).toEqual('');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should use "" if value is null', () => {
|
||||||
|
const val = pipe.transform(null, mapping);
|
||||||
expect(val).toEqual('');
|
expect(val).toEqual('');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not support bad arguments', () => {
|
it('should not support bad arguments', () => {
|
||||||
expect(() => pipe.transform(0, <any>'hey')).toThrowError();
|
expect(() => pipe.transform(0, 'hey' as any)).toThrowError();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -40,7 +40,7 @@ import {JitReflector} from '@angular/platform-browser-dynamic/src/compiler_refle
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should throw on bad arguments', () => {
|
it('should throw on bad arguments', () => {
|
||||||
expect(() => pipe.transform('male', <any>'hey')).toThrowError();
|
expect(() => pipe.transform('male', 'hey' as any)).toThrowError();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue