Re:Why We Chose Typescript
by make3 on Friday June 30, 2017 @07:33PM
(#14674235)
Actually I really wish there was an option similar to typescript for Python. There are promising things.. but the annotations, for example, are just not there yet
[ Parent
| on HN ]
I'm very satisfied with the new typing [0][1] module. It's part of the standard library since Python 3.5 and it provides type annotations similar to those of Typescript. It's still missing some features (IMO), but it's also under active development, so I guess more useful features will come.
from typing import List
Vector = List[float]
def scale(scalar: float, vector: Vector) -> Vector:
return [scalar * num for num in vector]
def greeting(name: str) -> str:
return 'Hello ' + name
[0] https://github.com/python/typing
[1] https://docs.python.org/3/library/typing.htmlwhat would you say are the limitations of Python type annotations? From the pycon demos I've seen it seems pretty functional and complete.
Re:Why We Chose Typescript
by deathanatos on Friday June 30, 2017 @08:46PM
(#14674574)
* pylint / pep8 doesn't parse comment-based annotations, and thus flags imports that are in use as "unused"
* numbers.Real / Union[float,int] do not work correctly; I basically can't figure a way to annotate a function that takes an int/float/decimal/etc.
(mypy doesn't think "int" is a valid "Real", and it doesn't think you can add two Union[float,int] objects.)
(mypy has nonetheless been very helpful, and overall I would recommend it.)
> I basically can't figure a way to annotate a function that takes an int/float/decimal/etc.
It seems like you should be able to just annotate it with float?
... when an argument is annotated as having type float , an argument of type int is acceptable ...
Re:Why We Chose Typescript
by deathanatos on Friday June 30, 2017 @11:46PM
(#14675260)
Hmm. I wasn't aware of that; still, it seems to not work for Decimal objects.
Re:Why We Chose Typescript
by slaymaker1907 on Friday June 30, 2017 @09:30PM
(#14674765)
You don't need comment based annotations since there are real annotations since python 3.5
I can't tell if you're neglecting the fact that most production Python is Python 2 on purpose or not
Re:Why We Chose Typescript
by deathanatos on Friday June 30, 2017 @11:43PM
(#14675251)
While true, my codebase regrettably needs to run in Python 2.7.
Re:Why We Chose Typescript
by slaymaker1907 on Friday June 30, 2017 @09:28PM
(#14674754)
I mostly found the type annotations to be sufficient, though the tooling look leaves something to be desired.