build(docs-infra): update project structure to cli@9 10/12 (`tsconfig.json`) (#36015)

Update `tsconfig[.*].json`.
Also, all make necessary changes to ensure the example apps can be
successfully built with the new, stricter type-checking options.

PR Close #36015
This commit is contained in:
George Kalpakas 2020-03-17 22:28:48 +02:00 committed by Andrew Kushnir
parent 9afd360eba
commit f6adc0c3f9
9 changed files with 41 additions and 19 deletions

View File

@ -39,7 +39,7 @@ import { animate, state, style, transition, trigger } from '@angular/animations'
`] `]
}) })
export class PopupComponent { export class PopupComponent {
private state: 'opened' | 'closed' = 'closed'; state: 'opened' | 'closed' = 'closed';
@Input() @Input()
set message(message: string) { set message(message: string) {

View File

@ -72,8 +72,8 @@
<h2>Non-null assertion operator (<code>!</code>)</h2> <h2>Non-null assertion operator (<code>!</code>)</h2>
<div> <div>
<!-- #docregion non-null --> <!-- #docregion non-null -->
<!--No color, no error --> <!-- Assert color is defined, even if according to the `Item` type it could be undefined. -->
<p *ngIf="item">The item's color is: {{item!.color}}</p> <p>The item's color is: {{item.color!.toUpperCase()}}</p>
<!-- #enddocregion non-null --> <!-- #enddocregion non-null -->

View File

@ -1,6 +1,13 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
interface Item {
name: string;
manufactureDate: Date;
color?: string | null;
price: number;
}
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
templateUrl: './app.component.html', templateUrl: './app.component.html',
@ -9,10 +16,11 @@ import { Component } from '@angular/core';
export class AppComponent { export class AppComponent {
title = 'Template Expression Operators'; title = 'Template Expression Operators';
item = { item: Item = {
name : 'Telephone', name : 'Telephone',
manufactureDate : new Date(1980, 1, 25), manufactureDate : new Date(1980, 1, 25),
price: 98 color: 'orange',
price: 98,
}; };
nullItem = null; nullItem = null;

View File

@ -2256,22 +2256,20 @@ It works perfectly with long property paths such as `a?.b?.c?.d`.
### The non-null assertion operator ( `!` ) ### The non-null assertion operator ( `!` )
As of Typescript 2.0, you can enforce [strict null checking](http://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html "Strict null checking in TypeScript") with the `--strictNullChecks` flag. TypeScript then ensures that no variable is unintentionally null or undefined. As of Typescript 2.0, you can enforce [strict null checking](http://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html "Strict null checking in TypeScript") with the `--strictNullChecks` flag. TypeScript then ensures that no variable is unintentionally `null` or `undefined`.
In this mode, typed variables disallow `null` and `undefined` by default. The type checker throws an error if you leave a variable unassigned or try to assign `null` or `undefined` to a variable whose type disallows `null` and `undefined`. In this mode, typed variables disallow `null` and `undefined` by default. The type checker throws an error if you leave a variable unassigned or try to assign `null` or `undefined` to a variable whose type disallows `null` and `undefined`.
The type checker also throws an error if it can't determine whether a variable will be `null` or undefined at runtime. You tell the type checker not to throw an error by applying the postfix The type checker also throws an error if it can't determine whether a variable will be `null` or `undefined` at runtime. You tell the type checker not to throw an error by applying the postfix
[non-null assertion operator, !](http://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html#non-null-assertion-operator "Non-null assertion operator"). [non-null assertion operator, !](http://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html#non-null-assertion-operator "Non-null assertion operator").
The Angular non-null assertion operator, `!`, serves the same purpose in The Angular non-null assertion operator, `!`, serves the same purpose in
an Angular template. For example, after you use [*ngIf](guide/template-syntax#ngIf) an Angular template. For example, you can assert that `item` properties are also defined.
to check that `item` is defined, you can assert that
`item` properties are also defined.
<code-example path="template-expression-operators/src/app/app.component.html" region="non-null" header="src/app/app.component.html"></code-example> <code-example path="template-expression-operators/src/app/app.component.html" region="non-null" header="src/app/app.component.html"></code-example>
When the Angular compiler turns your template into TypeScript code, When the Angular compiler turns your template into TypeScript code,
it prevents TypeScript from reporting that `item` might be `null` or `undefined`. it prevents TypeScript from reporting that `item.color` might be `null` or `undefined`.
Unlike the [_safe navigation operator_](guide/template-syntax#safe-navigation-operator "Safe navigation operator (?)"), Unlike the [_safe navigation operator_](guide/template-syntax#safe-navigation-operator "Safe navigation operator (?)"),
the non-null assertion operator does not guard against `null` or `undefined`. the non-null assertion operator does not guard against `null` or `undefined`.

View File

@ -4,12 +4,17 @@
"outDir": "./out-tsc/app", "outDir": "./out-tsc/app",
"types": [] "types": []
}, },
"files": [
"src/main.ts",
"src/polyfills.ts"
],
"include": [ "include": [
"src/**/*.ts" "src/**/*.d.ts"
], ],
"exclude": [ "exclude": [
"src/test.ts", "src/test.ts",
"src/**/*.spec.ts", "src/**/*.spec.ts",
"src/**/*-specs.ts",
"src/**/*.avoid.ts", "src/**/*.avoid.ts",
"src/**/*.0.ts", "src/**/*.0.ts",
"src/**/*.1.ts", "src/**/*.1.ts",
@ -19,6 +24,7 @@
"src/**/*.4.ts", "src/**/*.4.ts",
"src/**/*.5.ts", "src/**/*.5.ts",
"src/**/*.6.ts", "src/**/*.6.ts",
"src/**/*.7.ts" "src/**/*.7.ts",
"src/**/testing"
] ]
} }

View File

@ -5,10 +5,10 @@
"outDir": "./dist/out-tsc", "outDir": "./dist/out-tsc",
"sourceMap": true, "sourceMap": true,
"declaration": false, "declaration": false,
"downlevelIteration": true,
"experimentalDecorators": true,
"module": "esnext", "module": "esnext",
"moduleResolution": "node", "moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true, "importHelpers": true,
"target": "es2015", "target": "es2015",
"typeRoots": [ "typeRoots": [
@ -21,5 +21,7 @@
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"enableIvy": false, "enableIvy": false,
}, "fullTemplateTypeCheck": true,
"strictInjectionParameters": true
}
} }

View File

@ -4,8 +4,12 @@
"outDir": "./out-tsc/app", "outDir": "./out-tsc/app",
"types": [] "types": []
}, },
"files": [
"src/main.ts",
"src/polyfills.ts"
],
"include": [ "include": [
"src/**/*.ts" "src/**/*.d.ts"
], ],
"exclude": [ "exclude": [
"src/test.ts", "src/test.ts",

View File

@ -4,8 +4,12 @@
"outDir": "../out-tsc/app", "outDir": "../out-tsc/app",
"types": [] "types": []
}, },
"files": [
"src/main.ts",
"src/polyfills.ts"
],
"include": [ "include": [
"src/**/*.ts" "src/**/*.d.ts"
], ],
"exclude": [ "exclude": [
"src/test.ts", "src/test.ts",

View File

@ -1,7 +1,7 @@
{ {
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../out-tsc/spec", "outDir": "./out-tsc/spec",
"types": [ "types": [
"jasmine", "jasmine",
"node" "node"