typescript中使用自定义declare class,去a

2020-04-03  本文已影响0人  一只特例独行de猪

not constructable问题:


参考:https://stackoverflow.com/questions/41017287/cannot-use-new-with-expression-typescript
declare class AliOSS {
    public ossBucket: string;
    public expiration: number;
    public put: (key: string, path: string) => { ossKey: string, ossBucket: string; url: string};
    public url: string;
    constructor(args: Object);
}
// 方法1:使用typeof
const OSS = require("ali-oss") as typeof AliOSS;
const _ossClient = new OSS({
    region: 'oss-cn-shanghai',
    endpoint: data.endpoint,
    accessKeyId: data.accessKeyId,
    accessKeySecret: data.accessKeySecret,
    stsToken: data.securityToken,
    bucket: data.bucketName,
    protocol: data.protocol
});

// 方法2: 使用Constructable和泛型
type Constructable<T> = new(...args: Object[]) => T;
const OSS = require("ali-oss") as Constructable<AliOSS>;
const _ossClient = new OSS({
    region: 'oss-cn-shanghai',
    endpoint: data.endpoint,
    accessKeyId: data.accessKeyId,
    accessKeySecret: data.accessKeySecret,
    stsToken: data.securityToken,
    bucket: data.bucketName,
    protocol: data.protocol
});
上一篇下一篇

猜你喜欢

热点阅读