Reputation: 2487
I need to import stripe in to my application
First i installed stripe npm package
npm install stripe --save
Stripe documentation says that secret key should be set before connect the api.
In Node it likes this
var stripe = require('stripe')(' your stripe API key ');
I need to convert it to typescript
I tried following way . but it didnt work for me
import * as stripe from 'stripe';
stripe('sk_test_...')
if some can help me to solve this problem it will great help to me to continue my project without delay.
Thank you
Upvotes: 53
Views: 46137
Reputation: 2810
From the official documentation:
import Stripe from 'stripe';
const stripe = new Stripe('sk_test_...');
Upvotes: 1
Reputation: 1103
You can refer to the repo on GitHub: https://github.com/stripe/stripe-node
import Stripe from 'stripe';
const stripe = new Stripe('sk_test_...', {
apiVersion: '2020-08-27',
});
const createCustomer = async () => {
const params: Stripe.CustomerCreateParams = {
description: 'test customer',
};
const customer: Stripe.Customer = await stripe.customers.create(params);
console.log(customer.id);
};
createCustomer();
Upvotes: 72
Reputation: 1579
Update: The solution below is outdated and for those using [email protected]
or greater the answer from David Dehghan should be used.
As britzkopf said, stripe don't provide their own definitions yet (and probably never will), but you can use the type definitions from @types/stripe.
npm install stripe @types/stripe
And then import and construct the Stripe
class as follows.
import * as Stripe from 'stripe';
const stripe = new Stripe('xxx_xxx_xxx');
If you want finer grained imports for some reason you can use this (somewhat hacky) approach instead.
import { resources } from 'stripe';
const stripeData = require('stripe')('xxx_xxx_xxx');
const customers = new resources.Customers(stripeData, null);
Upvotes: 29
Reputation: 24815
As of stripe 8.0.1 the package has its own typeing so it is not necessary to install additional types. Just import it like this:
import Stripe from 'stripe';
Upvotes: 33
Reputation: 365
I had the same problem and the solution provided did not work for me:
import * as Stripe from 'stripe';
const stripe = new Stripe('xxx_xxx_xxx');
Using this approach, I got this error
[ts] Cannot use 'new' with an expression whose type lacks a call or construct signature. stripe.ts(1, 1): Type originates at this import. A namespace-style import cannot be called or constructed, and will cause a failure at runtime. Consider using a default import or import require here instead. (alias) class Stripe (alias) namespace Stripe import Stripe
I got it working using "allowSyntheticDefaultImports": true
in tsconfig.json
With this compile option, the following is valid in TypeScript:
import Stripe from "stripe";
const secret = process.env.STRIPE_SECRET!;
export const stripe = new Stripe(secret);
Upvotes: 10