【发布时间】:2020-05-26 09:15:08
【问题描述】:
我有一个定义文件,我们称之为someclass.d.ts,它看起来或多或少像这样:
declare class SomeClass {
static write : {
doThing(name: string) : string
}
static get : {
doThing2(count: number): string
}
}
这与someclass.ts中的实际类匹配
export default class SomeClass {
static write = {
doThing(name) {
return "foo1";
}
}
static get = {
doThing2(count) {
return "foo2";
}
}
}
然后在我的mainThing.ts 中,它实际上使用了SomeClass:
/// <reference types="./someclass" />
import SomeClass from './someclass.ts';
SomeClass.write.doThing("dummyexample");
如果我在 VSCode 中将鼠标悬停在 mainThing.ts/someclass.ts 中的 doThing 上,它的行为就像一切都是隐含的任何类型,这告诉我我做错了某事。我只是不知道是什么。
我猜我对这些类成员块的声明是错误的,但我不确定正确的做法是什么;尝试做static write = { 似乎让它寻找函数体......
我做错了什么?谢谢!
编辑:我知道我不需要有一个单独的定义文件,但我想以可读代码的名义这样做。 doThing 的 real 签名看起来更像
doThing({ name, email, password, p4, p5, p6 }
: { name: string, email: string, password: string, p4: string, p5: number, p6: string })
: Type1<Type2<Type3>>
编辑 2:另外,SomeClass 实际上不需要是一个类...也许 TypeScript 命名空间(或其他东西)更合适?我主要只是试图以一种不会压倒一切的方式组织大量实用程序方法。出于这个原因,一切都是故意静态的;当 SomeClass 没有任何状态时,实例化它是没有意义的。
【问题讨论】:
标签: typescript typescript-typings