-
Notifications
You must be signed in to change notification settings - Fork 2
type safety
#dynamic type safety
Stability: 3 - Stable
the biggest feature in terms of functionality.
add the keyword type to your class definition to create a new type.
class type MyClass {
constructor: function(){},
member: "default value"
};
the same scope rules as for functions and variables apply to classes.
a class variable is returned by the class type expression.
class type MyClass {
constructor: function(){},
member: "default value"
};
var theClassVariable = MyClass;
you can use it to address your created type within classical JavaScript. however it can not be used to create instances. it's not a constructor.
simply assume there exists a type named var in JavaScript / promiseLand.
var variable;
declares a variable of type var.
now replace the var with the type we created above.
MyClass typedVariable;
the typedVariable is now of type MyClass. it can only be assigned instances of MyClass. it can only be used where instances of MyClass are expected.
####type description for parameters and members
for typesafety of parameters put the name of the type in front of the parameter name.
function myFun(MyClass parameter1){
MyClass variable = paramter1;
var some = parameter1; // will trigger a compile warning as well as a runtime error
};
the function itself will be of a function type, containing the result type of a function and the types of parameters.
for class members do it in the same manner
class type AnotherType {
MyClass member: new MyClass(),
regularMember: "default",
var alsoRegularMember: "you can use var like a type"
};
####type description for return types
put the Class name in front of the function name.
function MyClass myFun(var parameter){
MyClass variable = new MyClass();
return variable;
};
####achivement
use typesafety within your program
instances of type classes are arrays.
accessing a array is considerably faster than accessing members by name.
since every member access is translated, it's a good opportunity to increase the runtime behavior.
####achivement
program superfast code
typesafety provides the foundation for a lot of features.
-
track
keep track of instances / have a destructor -
sync
sync instances over several frames -
unique
address your instances by id / make a singleton -
savable
an adapter to load and save a instance
types can not leave promiseLand. but they can be used across modules.
read more about [dynamic type usage](dynamic type usage).
found any errors?
missing something?
let me know