Size: a a a

2020 July 05

АБ

Александр Бакиматов... in ☄️ effector
источник

m

makoven in ☄️ effector
Aleksandr Osipov
Чем?
Ну смотри. Объект должен реализовать некий контракт. В классе ты пишешь class MyClass implements SomeContract {}
источник

AO

Aleksandr Osipov in ☄️ effector
makoven
Ну смотри. Объект должен реализовать некий контракт. В классе ты пишешь class MyClass implements SomeContract {}
А вы про работу в связке с class-ами и implements
источник

DS

Dmitriy Shuleshov in ☄️ effector
Aleksandr Osipov
А вы про работу в связке с class-ами и implements
Если у меня нет классов то и интерфейсы мне не нужны?
источник

AO

Aleksandr Osipov in ☄️ effector
А если мы не используем классы и implements то разницы нет получаеться что юзать интерфейсы и extends или type и объединение?
источник

AO

Aleksandr Osipov in ☄️ effector
Dmitriy Shuleshov
Если у меня нет классов то и интерфейсы мне не нужны?
Присоединяюсь к вопросу:)
источник

FB

Furrya Black in ☄️ effector
Aleksandr Osipov
А если мы не используем классы и implements то разницы нет получаеться что юзать интерфейсы и extends или type и объединение?
источник

AO

Aleksandr Osipov in ☄️ effector
Я честно говоря не понял ответ
источник

AO

Aleksandr Osipov in ☄️ effector
Можно чуть подробнее
источник

m

makoven in ☄️ effector
Aleksandr Osipov
А если мы не используем классы и implements то разницы нет получаеться что юзать интерфейсы и extends или type и объединение?
Да, как и озвучивалось изначально, дело больше в наглядности и выразительности. Можно выразить и через &, если по какой-то причине надо избегать  классов
источник

FB

Furrya Black in ☄️ effector
Aleksandr Osipov
Можно чуть подробнее
хм
// smth lib
type MyStore = { sid: String }
function releaseKraken(store: MyStore) {
 // serve store
}

type MyCustomStore = { myCustomizeId: String, /* what with sid? */ }
const myCustomStore: MyCustomStore = { myCustomizeId: 'bub' }

// Argument of type 'MyCustomStore' is not assignable to parameter of type 'MyStore'.
// Property 'sid' is missing in type 'MyCustomStore' but required in type 'MyStore'.
/* releaseKraken(myCustomStore) */

// ! алярм !
type MyCustomStoreAgain = MyStore & { myCustomizeId: String }
const myCustomStoreAgain: MyCustomStoreAgain = { sid: '!!!-->what here? its private section of lib', myCustomizeId: 'bub' }

// no errors, but what with sid???
releaseKraken(myCustomStoreAgain)
источник

AO

Aleksandr Osipov in ☄️ effector
makoven
Да, как и озвучивалось изначально, дело больше в наглядности и выразительности. Можно выразить и через &, если по какой-то причине надо избегать  классов
На счет наглядности - имхо вкусовщина уже
источник

AO

Aleksandr Osipov in ☄️ effector
Furrya Black
хм
// smth lib
type MyStore = { sid: String }
function releaseKraken(store: MyStore) {
 // serve store
}

type MyCustomStore = { myCustomizeId: String, /* what with sid? */ }
const myCustomStore: MyCustomStore = { myCustomizeId: 'bub' }

// Argument of type 'MyCustomStore' is not assignable to parameter of type 'MyStore'.
// Property 'sid' is missing in type 'MyCustomStore' but required in type 'MyStore'.
/* releaseKraken(myCustomStore) */

// ! алярм !
type MyCustomStoreAgain = MyStore & { myCustomizeId: String }
const myCustomStoreAgain: MyCustomStoreAgain = { sid: '!!!-->what here? its private section of lib', myCustomizeId: 'bub' }

// no errors, but what with sid???
releaseKraken(myCustomStoreAgain)
хм, а что не так? структурная типизация в действии же
источник

AO

Aleksandr Osipov in ☄️ effector
не ну я понял кажется об чем речь, но проблемы не вижу в этом
источник

m

makoven in ☄️ effector
Furrya Black
хм
// smth lib
type MyStore = { sid: String }
function releaseKraken(store: MyStore) {
 // serve store
}

type MyCustomStore = { myCustomizeId: String, /* what with sid? */ }
const myCustomStore: MyCustomStore = { myCustomizeId: 'bub' }

// Argument of type 'MyCustomStore' is not assignable to parameter of type 'MyStore'.
// Property 'sid' is missing in type 'MyCustomStore' but required in type 'MyStore'.
/* releaseKraken(myCustomStore) */

// ! алярм !
type MyCustomStoreAgain = MyStore & { myCustomizeId: String }
const myCustomStoreAgain: MyCustomStoreAgain = { sid: '!!!-->what here? its private section of lib', myCustomizeId: 'bub' }

// no errors, but what with sid???
releaseKraken(myCustomStoreAgain)
Этот perl выглядит невыразительно и плохо масштабируется
источник

AO

Aleksandr Osipov in ☄️ effector
makoven
Этот perl выглядит невыразительно и плохо масштабируется
Вопрос привычки, это как спор про фигурные скобки vs блоки отступов ala python
источник

m

makoven in ☄️ effector
Aleksandr Osipov
Вопрос привычки, это как спор про фигурные скобки vs блоки отступов ala python
Отступы и фигурные скобки суть то же самое: новый блок кода. А MyType & SomeContract семантически это скорее объединение структур, нежели реализация SomeContract над MyType
источник

DS

Dmitriy Shuleshov in ☄️ effector
Короче ниче не понял и опять подтверждаю свой вывод
https://t.me/effector_ru/138398
источник

AO

Aleksandr Osipov in ☄️ effector
Я тоже не понимаю по ходу
источник

АБ

Александр Бакиматов... in ☄️ effector
makoven
Отступы и фигурные скобки суть то же самое: новый блок кода. А MyType & SomeContract семантически это скорее объединение структур, нежели реализация SomeContract над MyType
так ведь изначально вопрос был в разнице объеденении типов и расширения интерфейсов. при чем здесь имплементация то?)
источник