From c9ff8a775a4728961ea3a02b2d1229c415019b92 Mon Sep 17 00:00:00 2001 From: Vitaly Komarov Date: Fri, 25 May 2018 14:50:00 +0400 Subject: [PATCH 1/3] code example update. See: https://www.typescriptlang.org/docs/handbook/interfaces.html --- pages/Interfaces.md | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/pages/Interfaces.md b/pages/Interfaces.md index 986ebdc..205aed8 100644 --- a/pages/Interfaces.md +++ b/pages/Interfaces.md @@ -231,14 +231,9 @@ interface SearchFunc { ```ts let mySearch: SearchFunc; -mySearch = function(source: string, subString: string) { - let result = source.search(subString); - if (result == -1) { - return false; - } - else { - return true; - } +mySearch = function(src: string, sub: string): boolean { + let result = src.search(sub); + return result > -1; } ``` @@ -544,4 +539,4 @@ class Location { По сути, `SelectableControl` ведет себя так же, как `Control`, о котором известно, что у него есть метод `select`. Классы `Button` и `TextBox` — подтипы `SelectableControl` (так как оба унаследованы от `Control` и у них есть метод `select`), однако `Image` и `Location` таковыми не являются. -[Источник](http://typescript-lang.ru/docs/Interfaces.html) \ No newline at end of file +[Источник](http://typescript-lang.ru/docs/Interfaces.html) From 4be225337f8518f00299e8ddd73124c2f9d12dca Mon Sep 17 00:00:00 2001 From: Vitaly Komarov Date: Fri, 25 May 2018 15:02:59 +0400 Subject: [PATCH 2/3] Code examples update. Fix of previous wrong commit. See: https://www.typescriptlang.org/docs/handbook/interfaces.html --- pages/Interfaces.md | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/pages/Interfaces.md b/pages/Interfaces.md index 205aed8..4c69aec 100644 --- a/pages/Interfaces.md +++ b/pages/Interfaces.md @@ -231,8 +231,8 @@ interface SearchFunc { ```ts let mySearch: SearchFunc; -mySearch = function(src: string, sub: string): boolean { - let result = src.search(sub); +mySearch = function(source: string, subString: string) { + let result = source.search(subString); return result > -1; } ``` @@ -244,12 +244,7 @@ mySearch = function(src: string, sub: string): boolean { let mySearch: SearchFunc; mySearch = function(src: string, sub: string): boolean { let result = src.search(sub); - if (result == -1) { - return false; - } - else { - return true; - } + return result > -1; } ``` @@ -262,12 +257,7 @@ mySearch = function(src: string, sub: string): boolean { let mySearch: SearchFunc; mySearch = function(src, sub) { let result = src.search(sub); - if (result == -1) { - return false; - } - else { - return true; - } + return result > -1; } ``` From 72643db8d4d41eb44dd0785ead92d42c8297acb5 Mon Sep 17 00:00:00 2001 From: Vitaly Komarov Date: Fri, 25 May 2018 16:32:03 +0400 Subject: [PATCH 3/3] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=D0=B0?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=B4=D0=B0=20=D0=B2=20=D0=B3=D0=BB=D0=B0=D0=B2?= =?UTF-8?q?=D0=B5=20"=D0=98=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D0=B9?= =?UTF-8?q?=D1=81=D1=8B,=20=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80=D1=8F?= =?UTF-8?q?=D1=8E=D1=89=D0=B8=D0=B5=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D1=8B?= =?UTF-8?q?"=20=D0=98=D1=81=D1=82=D0=BE=D1=87=D0=BD=D0=B8=D0=BA=20https://?= =?UTF-8?q?www.typescriptlang.org/docs/handbook/interfaces.html?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/Interfaces.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pages/Interfaces.md b/pages/Interfaces.md index 4c69aec..6c54264 100644 --- a/pages/Interfaces.md +++ b/pages/Interfaces.md @@ -505,7 +505,7 @@ interface SelectableControl extends Control { select(): void; } -class Button extends Control { +class Button extends Control implements SelectableControl { select() { } } @@ -513,15 +513,17 @@ class TextBox extends Control { select() { } } -class Image extends Control { +// Ошибка: Свойство 'state' отстутствует в типе 'Image'. +class Image implements SelectableControl { + select() { } } class Location { - select() { } + } ``` -В этом примере `SelectableControl` содержит все члены класса `Control`, включая приватное свойство `state`. +В этом примере интерфейс `SelectableControl` содержит все члены класса `Control`, включая приватное свойство `state`. Так как `state` — приватный член, реализовать интерфейс `SelectableControl` смогут только наследники `Control`. Так будет потому, что для совместимости приватных членов необходимо, чтобы они были объявлены в одном и том же базовом классе, а это возможно лишь для наследников `Control`.