【发布时间】:2020-10-11 07:35:29
【问题描述】:
我想做一个通用的打字稿类。但是当类在对象内部时它不起作用。我已经尝试了很多代码,但它们对我不起作用:(
我已经尝试了所有这些。
// this is my class object
const obj1 = {
Foo: class<T> {
foo: T
constructor({ foo }: { foo: T }) {
this.foo = foo;
}
getFoo(): T {
return this.foo
}
setFoo(t: T): T {
this.foo = t
return this.foo
}
}
}
// This works: it is typechecked
let a = new obj1.Foo({ foo: 0 })
a.getFoo() // number
a.setFoo('123') // error
// None of this works
// uncomment them to see errors
// let b: obj1.Foo = new obj1.Foo({ foo: 0 })
// let b: obj1.Foo<number> = new obj1.Foo({ foo: 0 })
// let b: typeof obj1.Foo = new obj1.Foo({ foo: 0 })
// let b: typeof obj1.Foo<number> = new obj1.Foo({ foo: 0 })
// let b: typeof obj1.Foo.prototype = new obj1.Foo({ foo: 0 })
// let b: typeof obj1.Foo.prototype<number> = new obj1.Foo({ foo: 0 })
// let b: typeof obj1["Foo"]["prototype"] = new obj1.Foo({ foo: 0 })
// let b: typeof obj1["Foo"]["prototype"]<number> = new obj1.Foo({ foo: 0 })
b.getFoo() // any
b.setFoo('123') // works (it should error instead)
谢谢,但抱歉英语不好
【问题讨论】:
-
嗨。对于什么目的,您在对象中包含类声明?如果你想实现命名空间逻辑,那么应该通过typescriptlang.org/docs/handbook/…来实现。
-
我想使用命名空间结构,但将所有命名空间保存在一个输出文件中
-
不幸的是我自己无法更改它@НиколайГольцев
标签: typescript generics