Я использую JavaScript в моем проекте Angular 2, TypeScript. Например, я использую MixPanel, которые имеют файла JavaScript и некоторые методы, которые выглядят следующим образом:объявить javascript методы в Angular 2/typescript, чтобы избежать прав x не существует ошибок
mixpanel.people.set({
"$first_name": "Joe",
"$last_name": "Doe",
"$created": "2013-04-01T09:02:00",
"$email": "[email protected]"
});
и это:
mixpanel.track("Video played", {
"Video length": 213,
"id": "hY7gQr0"
});
Вызов эти методы работают, но машинописный не может найти никаких определений этого mixpanel, поэтому он выдает ошибки. Это проблематично, потому что я не могу скомпилировать с этими ошибками ...
Поэтому я использую эту маленькую хитрость, чтобы объявить mixpanel как это:
import { Injectable } from '@angular/core';
declare var mixpanel: {
track(event: string, data: any): void;
identify(data: any): void;
people(data: any): void;
track_links(domQuery: string, eventName: string, properties: any): void;
};
@Injectable()
export class MixPanelService {
constructor() { }
public track(event: string, data: any) {
mixpanel.track(event, data);
}
public track_links(domQuery: string, eventName: string, properties: any) {
mixpanel.track_links(domQuery, eventName, properties);
}
public identify(id: string) {
mixpanel.people.set({ <---- ERROR: Property 'set' does not exist on type '(data: any) => void'.at line 37 col 21
'$first_name': id
});
mixpanel.identify(id);
}
}
Я объявляющий mixpanel.people, но не mixpanel.people.set. Это вызывает ошибку.
Кто-нибудь знает, как я должен объявить mixpanel var, чтобы исправить это? Или если есть лучшее решение?
Это может быть, я считаю, глядя на дефис. Можете ли вы поместить здесь ошибки? – Gary