typed provides type checking for function arguments at runtime without any compilation steps. It works with native types (Boolean, Number, String, etc.), global available custom types and so called structures (similar to interfaces, named after destructuring). Just add type declaration comments to your arguments and wrap your functions inside the typed() function.
var Greeter = typedthisgreeting = greeting;;return "Hello, " + thisgreeting;;var greeter = "world";console.loggreetergreet;
If the argument comments don´t work for you can also use the suffix parser which searches in argument names for type suffixes. Another option is to use no parser and to provide the type information manually by populating the types array of a typed function. Look at the advanced examples to see the usage of these formats.
Since the type parsing and type checking is performed at runtime your code will obviously run a bit slower compared to not using typed. Alternatively, you can perform type checking only during development and turn typed off for production environments by setting typed.active to false. When deactivated typed will not decorate any passed in functions.