Angular 的 HashId
HashId for Angular
我正在尝试在 Angular 最新版本项目中使用 http://hashids.org。
我找到了这个定义文件:
// Type definitions for Hashids.js 1.x
// Project: https://github.com/ivanakimov/hashids.node.js
// Definitions by: Paulo Cesar <https://github.com/pocesar>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node" />
export default class Hashids {
private version: string;
private minAlphabetLength: number;
private sepDiv: number;
private guardDiv: number;
private errorAlphabetLength: string;
private errorAlphabetSpace: string;
private alphabet: string[];
private seps: string;
private minHashLength: number;
private salt: string;
constructor(salt: string, minHashLength?: number, alphabet?: string);
public decode(hash: string): number[];
public encode(arg: number): string;
public encode(arg: number[]): string;
public encode(...args: number[]): string;
public encodeHex(str: string): string;
public decodeHex(hash: string): string;
public hash(input: number, alphabet: string): string;
public unhash(input: string[], alphabet: string): number;
}
但是当我尝试使用此代码在我的 Angular 项目中使用时:
import * as Hashids from 'hashids';
export abstract class BaseService {
protected getId(id: any) {
const x = new Hashids('somesecretec');
return x.encode(id);
}
}
我收到这个错误:
error TS2351: Cannot use 'new' with an expression whose type lacks a
call or construct signature.
在我的本地可以正常使用,没有问题。但是我试图编译一个生产设置,但它不起作用。
问题出在 Hashids 导入方式上,请使用以下选项将 hashids 作为默认值导入
import Hashids from 'hashids';
对命名导入使用 * 或 {},Hashids 在导入为命名导入时抛出以下错误(名称默认值除外)
error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
使用默认名称(因为默认导出也是名称为默认的命名导出)
import {default as Hashids} from "hashids";
我正在尝试在 Angular 最新版本项目中使用 http://hashids.org。
我找到了这个定义文件:
// Type definitions for Hashids.js 1.x
// Project: https://github.com/ivanakimov/hashids.node.js
// Definitions by: Paulo Cesar <https://github.com/pocesar>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node" />
export default class Hashids {
private version: string;
private minAlphabetLength: number;
private sepDiv: number;
private guardDiv: number;
private errorAlphabetLength: string;
private errorAlphabetSpace: string;
private alphabet: string[];
private seps: string;
private minHashLength: number;
private salt: string;
constructor(salt: string, minHashLength?: number, alphabet?: string);
public decode(hash: string): number[];
public encode(arg: number): string;
public encode(arg: number[]): string;
public encode(...args: number[]): string;
public encodeHex(str: string): string;
public decodeHex(hash: string): string;
public hash(input: number, alphabet: string): string;
public unhash(input: string[], alphabet: string): number;
}
但是当我尝试使用此代码在我的 Angular 项目中使用时:
import * as Hashids from 'hashids';
export abstract class BaseService {
protected getId(id: any) {
const x = new Hashids('somesecretec');
return x.encode(id);
}
}
我收到这个错误:
error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
在我的本地可以正常使用,没有问题。但是我试图编译一个生产设置,但它不起作用。
问题出在 Hashids 导入方式上,请使用以下选项将 hashids 作为默认值导入
import Hashids from 'hashids';
对命名导入使用 * 或 {},Hashids 在导入为命名导入时抛出以下错误(名称默认值除外)
error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
使用默认名称(因为默认导出也是名称为默认的命名导出)
import {default as Hashids} from "hashids";