I made an http call using Angular5 http client. In map function I have done the casting of the response to a PersonModel.
PersonModel has a function getFullName() which returns first_name + last_name
After doing the casting when I try to access this method on casted person object this shows an error of getFullName is not a function.
export class PersonModel {
constructor(
public first_name: string = null,
public middle_name: string = null,
public last_name: string = null) {
}
getFullName() {
return this.first_name + this.last_name;
}
}
This is the service
get(id: number): Observable<PersonModel> {
return this.http.get("customer/" + id)
.map((response: any) => {
return <PersonModel>response;
});
}
customerService.get(1).subscribe(result => {
console.log(result.getFullName());
})
Error core.js:1350 ERROR TypeError: person.getFullName is not a function
Log for object:
{first_name: "kjlkj", last_name: "jnkjh"}
However when I create an object like this:
const person = new PersonModel();
person.first_name = "lkj";
person.last_name= "lkj";
then this logs as this:
PersonModel {first_name: "kjlkj", last_name: "jnkjh"}
❌ Don't ever use the types Number , String , Boolean , Symbol , or Object These types refer to non-primitive boxed objects that are almost never used appropriately in JavaScript code.
The try catch in TypeScript statement provides a way to handle some or all of the errors that may occur in an application. These errors are often referred to as an exception. In a try-catch statement, you code a try block that contains the statements that may throw an exception.
any type can be avoided with more advanced technics such as interface augmentation, type intersection, and the use of generics. We used the keyof keyword to determine the passed property to the filterWith function that we added to the standard Array object.
Well , wellcome to JS/TS world.
When you cast basically it is just to avoid type "errors" on your IDE in typescript, and to be sure certain attributes exist on the object but not functions...
class Dog {
public name: string = "";
bark(): void {
console.log("whoof whoof");
}
}
let johnny = new Dog();
johnny.name = "johnny";
johnny.bark(); // => Barks ok
let onlyattrs = {
name: "err"
} as Dog;
// onlyattrs.bark(); // => function does not exists
let realDog = new Dog();
realDog = Object.assign(realDog, onlyattrs);
realDog.bark(); // => barks ok
Hope this helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With