angularjs - Typescript გამოიყენოს Javascript ობიექტი
მე ვგანვითარებ Node-ის საშუალებით. მე მაქვს შემდეგი ობიექტი Javascript ფაილში
function Person{
this.name = 'Peter',
this.lastname = 'Cesar',
this.age = 23
}
მინდა გავანაცხადო ეს ობიექტი ჩემს Typescript კოდში:
let peter: any = new Person();
მაგრამ მე ვღებულობ „Cannot find name 'Person'“ ეს ნორმალურია იმიტომ, რომ საჭიროა ფუნქციის სიგნატურის განსაზღვრა წინასწარ. როგორ შემიძლია ამის მიღწევა?
პასუხი #1
პასუხი არის @TomKunzemann და @GauravSrivastava-ის პასუხების შერევით: თქვენ უნდა განაცხადოთ ის როგორც კლასი.
კლავიშით declare თქვენ უბრალოდ აღწერთ კომპაილერს ტიპის ფორმას და მოქმედებას, იმპლემენტაციის გარეშე, ასე რომ ის ეყრდნობა გარემოში არსებულ Person ფუნქციას, რომელიც ჩართულია თქვენს JavaScript-ში.
და class-ით თქვენ TypeScript-ს ეუბნებით, რომ ეს ის ტიპის რამეა, რომელიც შექმნილია new-ით.
საბოლოოდ, სავარაუდოდ, თქვენ არ გსურთ peter-ს ტიპის any მინიჭება, წინააღმდეგ შემთხვევაში TypeScript მას შემდეგ არ შეამოწმებს ტიპს. თუ უბრალოდ გამოტოვებთ : any-ს, TypeScript განსაზღვრავს peter-ს ტიპს როგორც Person და შეასრულებს სასურველ ტიპის შემოწმებებს, როგორიცაა შეცდომების განსაზღვრა (მაგალითად, lastName ნაცვლად lastname):
declare class Person {
name: string;
lastname: string;
age: number;
}
let peter = new Person(); // okay
console.log(peter.name); // okay
// note the typo below
console.log(peter.lastName); // error!
// "Property 'lastName' does not exist on type 'Person'. Did you mean 'lastname'"?
იმედი მაქვს, ეს დაგეხმარება; წარმატებები!
პასუხი #2
ასე რომ, პირველ რიგში ვფიქრობ, რომ თქვენი ვანილა ჯავა-სკრიპტის სინტაქსი არასწორია, უნდა იყოს
function Person() {
this.name = 'Peter';
this.lastname = 'Cesar';
this.age = 23;
}
შემდეგ typescript-ში შეგიძლიათ გააკეთოთ
declare var Person: any;
let peter: any = new Person;
let john: any = new Person;
დაარწმუნეთ, რომ გარე js ჩართულია, შემდეგ შეგიძლიათ გქონდეთ რამდენიმე Person ობიექტი
