Update typescript.html.markdown (#2738)

https://github.com/adambard/learnxinyminutes-docs/issues/2737
This commit is contained in:
bezigon 2017-05-25 18:35:08 +03:00 committed by ven
parent 66c4b1c01a
commit 1ac2f69479

View File

@ -15,23 +15,32 @@ To test TypeScript's compiler, head to the [Playground] (http://www.typescriptla
```ts
// There are 3 basic types in TypeScript
var isDone: boolean = false;
var lines: number = 42;
var name: string = "Anders";
let isDone: boolean = false;
let lines: number = 42;
let name: string = "Anders";
// But you can omit the type annotation if the variables are derived from explicit literals
let isDone = false;
let lines = 42;
let name = "Anders";
// When it's impossible to know, there is the "Any" type
var notSure: any = 4;
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
// Use const keyword for constant variables
const numLivesForCat = 9;
numLivesForCat = 1; // Error
// For collections, there are typed arrays and generic arrays
var list: number[] = [1, 2, 3];
let list: number[] = [1, 2, 3];
// Alternatively, using the generic array type
var list: Array<number> = [1, 2, 3];
let list: Array<number> = [1, 2, 3];
// For enumerations:
enum Color {Red, Green, Blue};
var c: Color = Color.Green;
enum Color { Red, Green, Blue };
let c: Color = Color.Green;
// Lastly, "void" is used in the special case of a function returning nothing
function bigHorribleAlert(): void {
@ -43,16 +52,16 @@ function bigHorribleAlert(): void {
// The following are equivalent, the same signature will be infered by the
// compiler, and same JavaScript will be emitted
var f1 = function(i: number): number { return i * i; }
let f1 = function (i: number): number { return i * i; }
// Return type inferred
var f2 = function(i: number) { return i * i; }
let f2 = function (i: number) { return i * i; }
// "Fat arrow" syntax
var f3 = (i: number): number => { return i * i; }
let f3 = (i: number): number => { return i * i; }
// "Fat arrow" syntax with return type inferred
var f4 = (i: number) => { return i * i; }
let f4 = (i: number) => { return i * i; }
// "Fat arrow" syntax with return type inferred, braceless means no return
// keyword needed
var f5 = (i: number) => i * i;
let f5 = (i: number) => i * i;
// Interfaces are structural, anything that has the properties is compliant with
// the interface
@ -66,19 +75,19 @@ interface Person {
// Object that implements the "Person" interface
// Can be treated as a Person since it has the name and move properties
var p: Person = { name: "Bobby", move: () => {} };
let p: Person = { name: "Bobby", move: () => { } };
// Objects that have the optional property:
var validPerson: Person = { name: "Bobby", age: 42, move: () => {} };
let validPerson: Person = { name: "Bobby", age: 42, move: () => { } };
// Is not a person because age is not a number
var invalidPerson: Person = { name: "Bobby", age: true };
let invalidPerson: Person = { name: "Bobby", age: true };
// Interfaces can also describe a function type
interface SearchFunc {
(source: string, subString: string): boolean;
}
// Only the parameters' types are important, names are not important.
var mySearch: SearchFunc;
mySearch = function(src: string, sub: string) {
let mySearch: SearchFunc;
mySearch = function (src: string, sub: string) {
return src.search(sub) != -1;
}
@ -104,8 +113,8 @@ class Point {
static origin = new Point(0, 0);
}
var p1 = new Point(10 ,20);
var p2 = new Point(25); //y will be 0
let p1 = new Point(10, 20);
let p2 = new Point(25); //y will be 0
// Inheritance
class Point3D extends Point {
@ -115,7 +124,7 @@ class Point3D extends Point {
// Overwrite
dist() {
var d = super.dist();
let d = super.dist();
return Math.sqrt(d * d + this.z * this.z);
}
}
@ -131,12 +140,12 @@ module Geometry {
}
}
var s1 = new Geometry.Square(5);
let s1 = new Geometry.Square(5);
// Local alias for referencing a module
import G = Geometry;
var s2 = new G.Square(10);
let s2 = new G.Square(10);
// Generics
// Classes
@ -152,21 +161,21 @@ interface Pair<T> {
}
// And functions
var pairToTuple = function<T>(p: Pair<T>) {
let pairToTuple = function <T>(p: Pair<T>) {
return new Tuple(p.item1, p.item2);
};
var tuple = pairToTuple({ item1:"hello", item2:"world"});
let tuple = pairToTuple({ item1: "hello", item2: "world" });
// Including references to a definition file:
/// <reference path="jquery.d.ts" />
// Template Strings (strings that use backticks)
// String Interpolation with Template Strings
var name = 'Tyrone';
var greeting = `Hi ${name}, how are you?`
let name = 'Tyrone';
let greeting = `Hi ${name}, how are you?`
// Multiline Strings with Template Strings
var multiline = `This is an example
let multiline = `This is an example
of a multiline string`;
```