Inte alla braintree HostedFields-metoder är tillgängliga för TypeScript?


Jag använder Braintree Sandbox i mitt ReactJs-projekt med TypeScript.

Enligt Braintree-dokumentationen för fokus kan ett fält få fokus med metoden .focus().

hostedFieldsInstance.focus('number', function (focusErr) {
  if (focusErr) {
    console.error(focusErr); 
  }
});

Problem: I min TypeScript-fil visas inte .focus()-metoden som en giltig metod för hostedFieldsInstance. Jag får följande fel:

Property 'focus' does not exist on type 'HostedFields'.ts(2339)

VS Code föreslår också bara några få befintliga braintree-metoder men inte .focus():

Svar #1

TS-definitionerna från DefinitelyTyped inkluderar inte den funktionen, men det betyder inte att du inte kan kalla på den ändå. Dina alternativ inkluderar:

  • Att kringgå TS-kompilatorns kontroll i det fallet ((hostedFields as any).focus(...))
  • Skriva dina egna typdefinitioner för BrainTree, importera de befintliga från DefinitelyTyped och åsidosätta dem för att lägga till det du behöver
  • Väntar på BrainTree TS-omskrivningen (se den här kommentaren)

Relaterade artiklar