[英]What type i should pass to my imageIcon props in react typescript?
[英]TypeScript. What should I do if props swears at a property that is not defined? React
我使用各种库。 而且这些库没有 TypeScript。 如何在接口中定义它们? 我是说这个。
Interface IProps {
somelibrary: // What type should I write here?
}
我知道存在类型定义。 但是如何理解使用哪种类型。 例如
Interface IProps {
i18n: // What type should I write here?
}
也许你不需要定义一个,除非你想要严格的类型提示? 还有另一个答案,我发现我自己过去曾回过几次 - https://stackoverflow.com/a/12695001/2174733
因此,如果我理解正确的话,您想定义不一定具有 .d.ts 文件的库的类型。
前段时间我确实开始为我使用的名为 rethinkdb 的数据库执行此操作。 ( https://www.npmjs.com/package/rethinkdbdash )
正如一个警告,也有少数any
在这里引用但那纯粹是因为这是POC的时间,但你应该希望得到的是什么,我想实现的总体思路。
declare module 'rethinkdbdash' {
export default function RethinkDBDash(config: ConnectionConfig): RethinkConnection
interface ConnectionConfig {
host?: string;
port?: number;
db?: string;
}
export interface RethinkConnection {
table(document: string): Term;
asc(columnName: string): Term;
desc(columnName: string): Term;
}
interface filterQueryParams {
[key: string]: string;
}
interface Row {
(fieldName: string): Term;
}
interface Term {
insert(documents: any, options?: any): void;
filter(filterParams: filterQueryParams): any; //@todo change the return type
update(callback: (row: Row) => void): Term;
append(document: any): Term;
pluck(...columnNames: string[]): Term;
limit(amount: number): Term;
orderBy(fieldName: string): Term;
orderBy(obj: any): Term;
run(): any;
}}
上面是一个名为typings 的文件夹中名为rethink.d.ts 的文件。
您基本上可以将其视为我期望如何与底层库交互的合同。
你必须做的另一件事是告诉 TypeScript 编译器你已经为库定义了这些类型,你可以通过在 compilerOptions 块中的tsconfig.json
指定以下内容来做到这一点
"typeRoots": ["./node_modules/@types", "./src/**/typings"],
这告诉编译器 - 仍然尊重 node_modules 中的类型,但也包括我在项目中创建的任何自定义定义。
完成此设置后,您应该会在 IDE 中找到智能感知为您挑选这些定义。
我希望这能够解除对你的封锁
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.