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 ობიექტი