1
類我目前正在寫的基於JavaScript spotify-web-api-node模塊分型,因此它可以在一個打字稿項目中使用,併發揮好與編譯器。正確的方法來定義外部節點模塊
以下目前通過tsc
類型檢查,但TSlint抱怨Interfaces cannot be constructed. Did you mean declare class?
。將SpotifyInstance
從interface
切換到class
但是由於tsc TS2351 Cannot use 'new' with an expression whose type lacks a call or construct signature.
而導致無法編譯。
什麼是定義這個類並將其導出,以便在其他位置導入模塊時使用的正確方法是什麼?
spotify.d.ts
declare module "spotify-web-api-node" {
let instance: Spotify.SpotifyInstance;
export = instance;
}
declare namespace Spotify {
export interface Authorization {
body: {
access_token: string;
refresh_token: string;
};
}
export interface CurrentSong {
body: {
item: {
id: string;
name: string;
artists: [{
name: string;
}]
album: {
name: string;
images: [{
url: string
}]
}
}
};
}
export interface Config {
clientId: string;
clientSecret: string;
redirectUri: string;
}
export interface SpotifyInstance {
new(config: Config): SpotifyInstance;
createAuthorizeURL(permissions: string[], state: string): string;
authorizationCodeGrant(state: string): Promise<Authorization>;
getMyCurrentlyPlaying(): Promise<CurrentSong>;
setAccessToken(token: string): void;
setRefreshToken(token: string): void;
}
}
index.ts
import * as Spotify from "spotify-web-api-node";
const spotify = new Spotify({
clientId: "",
clientSecret: "",
redirectUri: ""
});
'SpotifyInstance'在我的第一個代碼分型的鈕是我目前使用定義什麼該類是外部模塊(spotify-web-api-node)。這是不正確的,因爲接口不能用於定義類,但是我想知道的是爲了在我的類型文件中從外部模塊定義類的正確語法。 – Dustin
啊你原來的代碼是在java-script中,並且你正在構建.d文件。 – freedeveloper
是的,你知道了!我一定要添加一個鏈接到外部模塊,我試圖寫類型,以便我可以在使用Typescript編譯器的同時使用模塊。 – Dustin