TypeScript känner inte igen Ajax find-funktionen
Jag har ett litet problem med min JS i en asp.net ajax-applikation. Jag har mycket JS-kod som finns i TypeScript-filer. Det gör det mycket lättare att koda för någon som mig med begränsad JS-erfarenhet.
Men jag använder också $find()-metoden som tillhandahålls av MS ASP.NET AJAX. Jag gör det eftersom jag använder en Telerik RadDock i min applikation och detta är det enda sättet jag kan manipulera RadDocks i JS.
Jag ändrar titlarna, stänger och öppnar dem från JS.
Nu skulle jag vilja ha all kod i min TypeScript-fil, men tyvärr känner den inte igen funktionen $find().
Så varje gång jag behöver använda $find()-funktionen skapar jag en ny funktion och lägger den direkt på min aspx-sida, och sedan refererar jag till den från mina TypeScript-filer.
Det var okej för en eller två funktioner även om det inte var idealiskt, men nu börjar det bli ett verkligt problem. Det finns mycket kod i aspx-filen.
Kan någon ge mig råd om hur jag kan lösa detta problem. Finns det något sätt jag kan hänvisa till $find()-metoden i mina TypeScript-filer?
Svar #1
Den snabba lösningen är att lägga till en deklaration för find-metoden, så här:
declare var $find;
Detta låter dig använda det på vilket sätt du vill, men ger dig inte automatisk komplettering.
var result = $find();
I detta exempel kommer result att vara av typen any.
Om du vill ha lite mer automatisk komplettering kan du göra deklarationen mer tydlig - jag vet inte vad funktionen gör, men om den accepterade en sträng och returnerade ett nummer, kunde du lägga till det i din deklaration:
declare var $find: (input: string) => number;
var result = $find('Example');
Nu kommer result-variabeln att vara av typen number och om du inte skickar strängen kommer TypeScript att varna dig.
Svar #2
Du kan också installera DefinitelyTyped microsoft ajax-biblioteket. Jag föredrar att installera från nuget. Inkludera sedan denna rad i din JavaScript:
/// <reference path="/Scripts/typings/microsoft-ajax/microsoft.ajax.d.ts" />
