-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Out of Band Type Annotation Support for Signatures #11218
Comments
What's the distinction vs this? Just the syntactic location, or the actual form of the signature type? const stringLength: (s: string) => number = word => word.length; |
Changing the title, since it doesn't actually have anything to do with Hindley-Milner which is an inference algorithm, not a syntactic style. Standard ML, for instance, doesn't use this syntax. |
this would be my recommendation: const stringLength = (word: string) => word.length; |
I don't see enough of a motivation to depart from the ECMAScript-reserved syntax, especially given that there's a sufficient mechanism in place that doesn't have any specific problems. For what it's worth, this also took me a little getting used to when I moved from Haskell to Standard ML. Thanks for filing though! |
Wow, this was closed fast. I was hoping for more discussion. I know there are other TypeScript users that would like to see something like this supported.
I find something like the above very confusing/hard to read, and this is for the most basic example.
Hindley-Milner is a type system, which does describe an inference algorithm, but also comes with a syntax which functional languages like Haskell and functional JavaScript libraries have adopted to use as type annotations.
What do you mean by “ECMAScript-reserved syntax”? Since when are these type annotations ECMAScript-reserved syntax? With my proposed annotations I can use regular ECMAScript which allows me to use it in projects where the move to the TypeScript syntax is not desired. |
Good you came back and explained further as I completely misunderstood your question in the first instance. Sure, this syntax is very familiar to Haskellers
and, IIRC, Elm (compile-to-JS) language also makes use of the same .. so you are certainly not alone in having some affinity for it. I'm just a casual observer though does seem like your issue was closed off & dismissed rather quickly. Maybe for the moment you will just have to accept putting your style of type annotations in alla-comment-style, which, btw, is something that I understand Flow people subsequently embraced. |
I am totally fine and actually prefer putting my type annotations in comments. The problem is I get no help from TypeScript using these type signatures. |
Today you can write: type StringLength = (s: string) => number
const stringLength: StringLength = word => word.length |
Not even close :/ |
Has anyone found a way to support these type annotations? I'm jumping into a JavaScript project using these annotations and would love to support these type annotations in comments like the original post above. This seems like a good fit for a TypeScript Language Service Plugin. cc @iclanzan |
I am not sure if it would be at all possible or feasible but I would really appreciate Hindley–Milner type signature support in TypeScript:
I am writing a lot of code like this as I find it much easier to read but unfortunately TypeScript doesn’t understand this notation.
Some relevant reading:
The text was updated successfully, but these errors were encountered: