Open tolotrasamuel opened 4 years ago
What do we think of this form?
type BinaryOperator<T> = (x: T, y: T) => T
class Foo {
// Notice the lack of "="
sum: BinaryOperator<number> (x, y) {
return x+y;
}
}
This would be a nice parallel to usual variable type declaration. I feel like the as X
expression is an assertion instead of a declaration. Like, if you were to use it on an arrow function:
const sum = ((x,y,z) => false) as BinaryOperator<number> // sum is (number,number) => number
const sum: BinaryOperator<number> = ((x,y,z) => false) //error!
I do like the idea of declaring the typing for methods though.
+1 on this It would be very useful
class Foo {
// Notice the lack of "="
sum: BinaryOperator<number> (x, y) {
return x+y;
}
}
This solution feels good to me ππ»
Note that I would also expect to work with (or as an alternative) implements
interface IFoo {
sum: BinaryOperator<number>
}
class Foo implements IFoo {
sum() (x, y) {
return x+y;
}
}
Search Terms
casting type interface method function parameters inference class
Suggestion
Currently, it is impossible to infer the parameters and the return types of a method of a class using a type
The goal is to be able to declare a method without repeating the param types and the return type. I used typescript
Type
for that.But there is currently no way to do this without changing the compiled javascript code.
I tried
BUT unfortunately, this changes the javascript code compiled into:
I am looking for something that compiles into:
Another option currently is to declare an interface and implement it on the class like so:
HOWEVER, this approach would bnd the method name to only
sum
. What if I want to use the same method type with a different name likedivide
ormultiply
Use Cases
It will be used like this
Examples
or
or
Checklist
My suggestion meets these guidelines: