diff options
Diffstat (limited to 'typescript.html.markdown')
-rw-r--r-- | typescript.html.markdown | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/typescript.html.markdown b/typescript.html.markdown new file mode 100644 index 00000000..f0667d49 --- /dev/null +++ b/typescript.html.markdown @@ -0,0 +1,75 @@ +--- +language: TypeScript +contributors: + - ["Philippe Vlérick", "https://github.com/pvlerick"]] +--- + +TypeScript is a language that aims at easing development of large scale applications written in JavaScript. +TypeScript adds common concepts such as classes, modules, interfaces, generics and (optional) static typing to JavaScript. +It is a superset of JavaScript: any JavaScript code is valid TypeScript code so it can be added seamlessly to any project. +TypeScript code compiles down to JavaScript. + +This article will focus only on TypeScript added syntax, everything else is plain [JavaScript] (../javascript/). + +```ts +//There are 4 basic types in TypeScript +var isDone: boolean = false; +var lines: number = 42; +var name: string = "Anders"; + +//However, when it's impossible to know, there is the "Any" type +var notSure: any = 4; +notSure = "maybe a string instead"; +notSure = false; // okay, definitely a boolean + +//For collections, there are typed arrays and generic arrays +var list: number[] = [1, 2, 3]; +//Or, using the generic array type +var list: Array<number> = [1, 2, 3]; + +//For enumerations +enum Color {Red, Green, Blue}; +var c: Color = Color.Green; + +//Lastly, "void" is used in the special case of a function not returning anything +function bigHorribleAlert(): void { + alert("I'm a little annoying box!"); +} + +//Interfaces are structural, anything that has the properties is compliant with the interface. +//In the bellow example, any object that has a name which is a string and an age which is a number is a Person. +//This is called "duck typing". +interface Person { + name: string; + age: number; + + //Interfaces also support optional properties + phone?: number; +} + +//Interfaces can also describe a function type, to describe a function signature +interface SearchFunc { + (source: string, subString: string): boolean; +} +//The type can then be used for functions, and the compiler will be able to check that types are compliants +//Note that only the parameters' types are important, names are not important. +var mySearch: SearchFunc; +mySearch = function(src: string, sub: string) { + var result = source.search(subString); + if (result == -1) { + return false; + } + else { + return true; + } +} + + +``` + +To test TypeScript's compiler, head to the [Playground] (http://www.typescriptlang.org/Playground). + +## Further Reading + * [TypeScript Official website] (http://www.typescriptlang.org/) + * [TypeScript language specifications (pdf)] (http://go.microsoft.com/fwlink/?LinkId=267238) + * [Anders Hejlsberg - Introducing TypeScript on Channel 9] (http://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-TypeScript) |