let indexedArray: {[key: string]: number}
let indexedArray: {[key: string]: number} = {
foo: 123,
bar: 456
}
indexedArray['foo'] = 12;
indexedArray.foo= 45;
export interface SuccessResponse<T> extends ResponseEntity {
data: T;
}
export interface FailureResponse<T> extends ResponseEntity {
error: T;
}
// type-guard
export function isSuccessResponseTypeGuard<T>(data: ResponseEntity): data is SuccessResponse<T> {
return (<SuccessResponse<T>>data).data !== undefined;
}
// use
if (!isSuccessResponseTypeGuard<IUser>(result)) {
throw new UnauthorizedException(result.message);
}
function isFish(pet: Fish | Bird): pet is Fish {
return (<Fish>pet).swim !== undefined;
}
// Both calls to 'swim' and 'fly' are now okay.
if (isFish(pet)) {
pet.swim();
}
else {
pet.fly();
}