webspeechapi: Require typescript@2.2 and rely on lib.dom.d.ts types (#20239)

This commit is contained in:
Andy
2017-10-06 10:10:18 -07:00
committed by GitHub
parent c3d62c5372
commit afdde07862
3 changed files with 49 additions and 110 deletions

View File

@@ -2,6 +2,7 @@
// Project: https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html
// Definitions by: SaschaNaz <https://github.com/saschanaz>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.2
// Spec version: 19 October 2012
// Errata version: 6 June 2014
@@ -92,73 +93,3 @@ interface SpeechGrammarListStatic {
}
declare var SpeechGrammarList: SpeechGrammarListStatic;
declare var webkitSpeechGrammarList: SpeechGrammarListStatic;
/* Errata 08 */
interface SpeechSynthesis extends EventTarget {
pending: boolean;
speaking: boolean;
paused: boolean;
/* Errata 11 */
onvoiceschanged: (ev: Event) => any;
speak(utterance: SpeechSynthesisUtterance): void;
cancel(): void;
pause(): void;
resume(): void;
/* Errata 05 */
getVoices(): SpeechSynthesisVoice[];
}
interface SpeechSynthesisGetter {
speechSynthesis: SpeechSynthesis;
}
interface Window extends SpeechSynthesisGetter {
}
declare var speechSynthesis: SpeechSynthesis;
interface SpeechSynthesisUtterance extends EventTarget {
text: string;
lang: string;
/* Errata 07 */
voice: SpeechSynthesisVoice;
volume: number;
rate: number;
pitch: number;
onstart: (ev: SpeechSynthesisEvent) => any;
onend: (ev: SpeechSynthesisEvent) => any;
/* Errata 12 */
onerror: (ev: SpeechSynthesisErrorEvent) => any;
onpause: (ev: SpeechSynthesisEvent) => any;
onresume: (ev: SpeechSynthesisEvent) => any;
onmark: (ev: SpeechSynthesisEvent) => any;
onboundary: (ev: SpeechSynthesisEvent) => any;
}
interface SpeechSynthesisUtteranceStatic {
prototype: SpeechSynthesisUtterance;
new (): SpeechSynthesisUtterance;
new (text: string): SpeechSynthesisUtterance;
}
declare var SpeechSynthesisUtterance: SpeechSynthesisUtteranceStatic;
interface SpeechSynthesisEvent extends Event {
/* Errata 08 */
utterance: SpeechSynthesisUtterance;
charIndex: number;
elapsedTime: number;
name: string;
}
/* Errata 12 */
interface SpeechSynthesisErrorEvent extends SpeechSynthesisEvent {
error: string;
}
interface SpeechSynthesisVoice {
voiceURI: string;
name: string;
lang: string;
localService: boolean;
default: boolean;
}

View File

@@ -0,0 +1,8 @@
{
"extends": "dtslint/dt.json",
"rules": {
// TODOs
"dt-header": false,
"prefer-method-signature": false
}
}

View File

@@ -7,33 +7,33 @@ https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#examples-recogniti
// Example 1
declare var q: HTMLInputElement;
() => {
var recognition = new SpeechRecognition();
recognition.onresult = function (event) {
{
const recognition = new SpeechRecognition();
recognition.onresult = event => {
if (event.results.length > 0) {
q.value = event.results[0][0].transcript;
q.form.submit();
}
}
};
}
// Example 2
declare var select: HTMLSelectElement;
() => {
var recognition = new SpeechRecognition();
declare const select: HTMLSelectElement;
{
const recognition = new SpeechRecognition();
recognition.maxAlternatives = 10;
recognition.onresult = function (event) {
recognition.onresult = event => {
if (event.results.length > 0) {
var result = event.results[0];
for (var i = 0; i < result.length; ++i) {
var text = result[i].transcript;
const result = event.results[0];
for (let i = 0; i < result.length; ++i) {
const text = result[i].transcript;
select.options[i] = new Option(text, text);
}
}
}
};
function start() {
let x: number = select.options.length;
const x: number = select.options.length;
recognition.start();
}
}
@@ -41,25 +41,25 @@ declare var select: HTMLSelectElement;
// Example 3
/*
This example has some changes from the one in spec.
`var i = resultIndex` -> `var i = event.resultIndex` (Recorded as Errata 16)
`const i = resultIndex` -> `const i = event.resultIndex` (Recorded as Errata 16)
`event.results.final` -> `event.results[i].isFinal` (Recorded as Errata 02)
*/
declare var textarea: HTMLTextAreaElement;
declare var button: HTMLButtonElement;
() => {
var recognizing: boolean;
var recognition = new SpeechRecognition();
declare const textarea: HTMLTextAreaElement;
declare const button: HTMLButtonElement;
{
let recognizing: boolean;
const recognition = new SpeechRecognition();
recognition.continuous = true;
reset();
recognition.onend = reset;
recognition.onresult = function (event) {
for (var i = event.resultIndex; i < event.results.length; ++i) {
recognition.onresult = event => {
for (let i = event.resultIndex; i < event.results.length; ++i) {
if (event.results[i].isFinal) {
textarea.value += event.results[i][0].transcript;
}
}
}
};
function reset() {
recognizing = false;
@@ -84,21 +84,21 @@ This example has a change from the one in spec.
`recognition.interim = true;` -> `recognition.interimResults = true;` (Recorded as Errata 01)
`event.results[i].final` -> `event.results[i].isFinal` (Recorded as Errata 02)
*/
declare var button: HTMLButtonElement;
declare var final_span: HTMLSpanElement;
declare var interim_span: HTMLSpanElement;
declare const final_span: HTMLSpanElement;
declare const interim_span: HTMLSpanElement;
() => {
var recognizing: boolean;
var recognition = new SpeechRecognition();
let recognizing: boolean;
const recognition = new SpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;
reset();
recognition.onend = reset;
recognition.onresult = function (event) {
var final = "";
var interim = "";
for (var i = 0; i < event.results.length; ++i) {
recognition.onresult = event => {
let final = "";
let interim = "";
// tslint:disable-next-line prefer-for-of (not an Iterable?)
for (let i = 0; i < event.results.length; ++i) {
if (event.results[i].isFinal) {
final += event.results[i][0].transcript;
} else {
@@ -107,7 +107,7 @@ declare var interim_span: HTMLSpanElement;
}
final_span.innerHTML = final;
interim_span.innerHTML = interim;
}
};
function reset() {
recognizing = false;
@@ -126,8 +126,7 @@ declare var interim_span: HTMLSpanElement;
interim_span.innerHTML = "";
}
}
}
};
// 6.2 Speech Synthesis Examples
@@ -136,16 +135,17 @@ declare var interim_span: HTMLSpanElement;
This example has a change from the one in spec.
`SpeechSynthesisUtterance('Hello World')` -> `new SpeechSynthesisUtterance('Hello World')` (Recorded as Errata 09)
*/
() => {
{
speechSynthesis.speak(new SpeechSynthesisUtterance('Hello World'));
}
//Example 2
() => {
var u = new SpeechSynthesisUtterance();
// Example 2
{
const u = new SpeechSynthesisUtterance();
u.text = 'Hello World';
u.lang = 'en-US';
u.rate = 1.2;
u.onend = function (event) { alert('Finished in ' + event.elapsedTime + ' seconds.'); }
// TODO: https://github.com/Microsoft/TSJS-lib-generator/issues/232
u.onend = event => { alert(`Finished in ${(event as any).elapsedTime} seconds.`); };
speechSynthesis.speak(u);
}
}