anchor.diff:  
   === Setting up the development environment
   
  -TypeScript code cannot be executed in the browser directly. Before it can be used in a web page it has to be compiled into pure JavaScript code. So we need to set up some kind of build process for the TypeScript compilation.
  -
  -The TypeScript compiler is available as a https://www.npmjs.com/[NPM] module and therefore it is obvious the create a NPM project and install the compiler as a development dependency. All you need to do is:
  +TypeScript code cannot be executed in the browser directly. Before it can be used in a web page it must be compiled into pure JavaScript code. So we need to set up some kind of build process for the TypeScript compilation.
  +
  +The TypeScript compiler is available as a https://www.npmjs.com/[NPM] module and therefore it is obvious the create a NPM project and install the compiler as a development dependency. All we need to do is:
   
   . Install a recent version of https://nodejs.org/[Node.js]. I would recommend to use the LTS version because it is quite settled and should work with most of the libraries you may use in your project. The installation of Node.js also includes NPM, the package manager that we will be using for the build process and dependency management.
  -. Create a new directory where you would like to start your project.
  -. Open a terminal in your project directory.
  +. Create a new directory where we would like to store our project in.
  +. Open a terminal in our project directory. Leave it open as we will have to execute various commands throughout this tutorial.
   . Run the command: `npm init`. This will prompt for some basic project information which can be changed at any time later on. Keep pressing ENTER if you are not sure what to do.
   
  -Finally, you will have a file `package.json` in your project directory. This file is typical for all NPM projects and contains meta information about your project as well as the build scripts and a list of libraries that are required by your project.
  +Finally, we will have a file `package.json` in our project directory. This file is typical for all NPM projects and contains meta information about our project as well as the build scripts and a list of libraries that are required by the project.
  +
  +Throughout this tutorial you will have to edit quite a lot of text files containing different kinds of source code (JavaScript, JSON). Even though it is possible to do all that with a simple text editor I would recommend to install a more sophisticated source code editor. You can start with the free and yet powerful https://code.visualstudio.com/[Visual Studio Code] if you are not sure what to choose. It has fantastic TypeScript support out-of-the-box.
   
   === Installing the TypeScript compiler
   
  -Once you have initialized your NPM project you should install the TypeScript compiler.
  -
  -. Go to the terminal in your project directory.
  +Once we have initialized our NPM project we can install the TypeScript compiler.
  +
  +. Go to the terminal in our project directory.
   . Run the command: `npm install typescript@2.1.6 --save-dev`.
   
  -IMPORTANT: The restriction to TypeScript 2.1 is only necessary because there is a breaking change in TypeScript 2.2 which prevents the https://github.com/monounity/karma-typescript[karma-typescript] preprocessor from working. The author is already working on a new version, see issue https://github.com/monounity/karma-typescript/issues/92 - once this has been fixed you may also use the latest TypeScript version.
  -
  -You will notice a new directory `node_modules` in your project. It is managed by NPM and contains all the libraries that your project depends on.
  +IMPORTANT: The restriction to TypeScript 2.1 is only necessary because there is a breaking change in TypeScript 2.2 which prevents the https://github.com/monounity/karma-typescript[karma-typescript] preprocessor from working. The author is already working on a new version, see issue https://github.com/monounity/karma-typescript/issues/92 - once this has been fixed we may also use the latest TypeScript version.
  +
  +You will notice a new directory `node_modules` in our project. It is managed by NPM and contains all the libraries that our project depends on. Do not add or remove anything within this directory on your own because it is all handled by NPM.
   
   TIP: You should exclude `node_modules` from your source code management. If you are using Git you should add a `.gitignore` file in your project directory which defines `/node_modules` as a resource to exclude.
   
  -Since the compiler is installed locally to your project you will have to create a NPM script to be able to run the compilation from the command line.
  +Since the compiler is installed locally to our project we have to create a NPM script to be able to run the compilation from the command line.
   
   . Open the file `package.json` with the text editor.
   . Add a new propery `compile` with the value `tsc` in the `scripts` object:
  
positive.code: });
  ----
  
  Now the time has come to run the first test case.
  
  . Go to the terminal in your project directory.
  . Run the command: `npm test`. This will fire up the Karma test runner as defined in the `package.json`.
  
  Finally, you should see a message that one test has been executed successfully. Like this:
  
    Executed 1 of 1 SUCCESS (0.004 secs / 0.001 secs)
  
  You will find a new directory `coverage` in your project directory which contains the test coverage report. There you can see which functions have been executed during the tests and where you should better add some more test cases.
  
  === Structuring the project with modules
  
  Upcoming...
  
  == License
  
  
negative.code:     "noImplicitThis": true,
      "allowSyntheticDefaultImports": true,
      "removeComments": true,
      "sourceMap": true
    }
  }
  ----
  
  `"rootDir": "src"`:: Uses the `src` directory as the root directory for the resolution of source files. This ensures that our compiled JavaScript files in the `dist` directory are organized in the same directory structure as in the `src` directory.
  
  `"outDir": "dist"`:: Writes the compiled JavaScript files to the `dist` directory.
  
  `"target": "es2015"`:: Compiles the TypeScript code to JavaScript code that still utilizes ES2015 language features like lambda expressions. This language level is not supported by all browsers yet but we will convert it to a more compatible level later on.
  
  `"module": "es2015"`:: Compiles the TypeScript modules to ES2015 modules using the standardized `import/export` syntax. This module format is required because we want to use the compiled JavaScript files with rollup.js to create a single JavaScript file.
  
  `"moduleResolution": "node"`:: Instructs the compiler to resolve non-relative module imports like `import $ from 'jquery'` with the Node.js mechanism thus looking for modules in the `node_modules` directory. This allows us to use modules installed with NPM in our TypeScript code. See the TypeScript https://www.typescriptlang.org/docs/handbook/module-resolution.html[handbook] for further details.
  
  `"noImplicitAny": true`:: Raises a compile error if any variable does not have an explicit type declaration and therefore the compiler would have to assume `any` for it. This helps to improve code stability because it enforces strict type checking.
  
  `"noImplicitReturns": true`:: Raises a compile error if any function with a return type other than `void` or `any` has branches that do not explicitly return any result. This may result in unexpected behavior and therefore it is reasonable to let the compiler check for such mistakes.
  
  `"noImplicitThis": true`:: Raises a compile error if the keyword `this` is used in the code and the compiler does not know what kind of object it will be in that context. This can happen when you use `this` in functions which are not declared as methods of a class but by an interface. See the TypeScript https://www.typescriptlang.org/docs/handbook/functions.html[handbook] for an example and how to tell the compiler what `this` means in a function.
  
  `"allowSyntheticDefaultImports": true`:: Forces the compiler to accept default imports of modules which actually do not have any default export as it is the case with the jQuery type declaration. Without that option the statement `import $ from 'jquery'` would yield a compile error.
  
  `"removeComments": true`:: Removes the source code comments from the compiled JavaScript files. This reduces their size and we still have sourcemaps for debugging, so comments are not needed in the output.
  
  `"sourceMap": true`:: Generates `.js.map` sourcemap files for all generated JavaScript files. This makes it easier to debug our source code when it runs in the browser.
  
  TIP: If you want to dive into the TypeScript compiler options further please have a look at the https://www.typescriptlang.org/docs/handbook/tsconfig-json.html[documentation].
  
  === Creating a TypeScript source file
  
  Now that we have configured the TypeScript compiler we are ready to create a first source code file. Since we told the compiler to expect source files in the `src` directory we should put all TypeScript files there (or in subdirectories beneath).
  
  . Create a directory `src` in our project directory.
  . Create a new file `example-service.ts` in the `src` directory.
  . Open the new TypeScript file in the text editor and insert the following code:
  
  