@typescript_ru

Страница 287 из 669
from
17.07.2017
18:31:11
class Something { instMethod(): void; constructor() { this.instMethod = this.getInstMethod(); } getInstMethod() { return () => { console.log('hey'); }; } } получаю ошику на второй строчке: "Function implementation is missing or not immediately following the declaration".

почему так? :(

andretshurotshka?❄️кде
17.07.2017
18:32:16
instMethod: () => void мб

Google
from
17.07.2017
18:33:20
instMethod: () => void мб
oO сработало объяснишь почему?

Реализации нема
да как нет, есть же всё)

т.к. arrow function?...

Dreamerinnoise
17.07.2017
18:35:29
Разглядел что ты в конструкторе делаешь. Зачем так писать?...

Andrew
17.07.2017
18:35:43
oO сработало объяснишь почему?
потому что вместо метода (у которого должно быть тело) ты объявляешь свойство типа "функция" (у которого может не быть значения)

Andrew
17.07.2017
18:38:05
хмммм т.е. семантическая разница?
да, это слегка разные штуки с точки зрения typescript, но в скомпилированном JS будет одно и то же

from
17.07.2017
18:38:32
понятно!

Aleh
17.07.2017
19:05:48
да, это слегка разные штуки с точки зрения typescript, но в скомпилированном JS будет одно и то же
Нет, одно объявляется в конструкторе на инстансе, а второе на прототипе

Andrew
17.07.2017
19:08:32
Нет, одно объявляется в конструкторе на инстансе, а второе на прототипе
Кстати да, ты прав, метод разумеется будет в прототипе

Я имел в виду, что с точки зрения JS "метод" - это частный случай свойства

Google
from
17.07.2017
19:15:04
from
17.07.2017
19:20:03
Ок, в общем вроде все друг друга поняли :)

Vasiliy
17.07.2017
19:58:26
всем привет, кто-нибудь знает как сейчас дела с типизацией рамды? что-то улучшилось же? :)

andretshurotshka?❄️кде
17.07.2017
19:58:58
нет

¯\_(ツ)_/¯

Vasiliy
17.07.2017
19:59:25
блин, я в прошлый раз просто выбросил тайпинги рамды, но какой тогда смысл в тс

ладно, я уже как-то ныл по этому поводу один раз, полгода назад или больше

andretshurotshka?❄️кде
17.07.2017
20:01:51
смысл тс в флоу

? или нет

Vasiliy
17.07.2017
20:02:23
а как во флоу дела с типизацией рамды?

andretshurotshka?❄️кде
17.07.2017
20:02:42
@ZeroBias говорил, что смог нормально типизировать

Но не всю

Vasiliy
17.07.2017
20:05:24
@ZeroBias расскажи плиз :) стоит ли оно того

Anton
17.07.2017
22:23:00
Такой вопрос

export default handleActions({ [fetchMovieInformationRequest]: (state: any, action:any ) => { }, Имеется редьюсер, но flow ругается Computed property cannot be assigned with 'function type'.

что с эти можно сделать?

Сергей
17.07.2017
22:23:49
у тебя any прям в коде?

Anton
17.07.2017
22:24:12
any я только что дописал

Google
Anton
17.07.2017
22:24:23


ну и ошибка что Computed property cannot be assigned with 'function type'. для каждого [fetch...]

andretshurotshka?❄️кде
17.07.2017
22:30:13
redux-act?

Anton
17.07.2017
22:31:43
aga

Vasiliy
17.07.2017
22:36:37
поищи по redux-act в этом чатике:) там много боли

Дмитрий
18.07.2017
06:18:23
@ZeroBias расскажи плиз :) стоит ли оно того
Что именно?) Да, я вроде в процессе типизации рамды, жить можно) Но флоу форсит некоторые практики ради выводимости типов, из-за которых ряд методов рамды просто больше не используются, поэтому проблем меньше ¯\_(ツ)_/¯

Nikolay
18.07.2017
09:16:26
Привет. Есть некий набор классов, который нужно объединить в один модуль/неймспейс (хз что лучше), чтобы импортировать весь модуль, а не классы по отдельности. Как это лучше сделать?

Artur
18.07.2017
09:18:00
index.ts, минуточку

Короче да, index.ts и в нём реэкспорты

Если хочется в одном файле, то можно namespace: export namespace Group { export class Class1 {} export class Class2 {} } import {Group} from "./group" new Group.Class1() new Group.Class2()

Сергей
18.07.2017
09:19:47
nooo

не надо namespace советовать

Artur
18.07.2017
09:19:56
nooo
вай нот?

Сергей
18.07.2017
09:20:01
бесполезное днище

namespace это пережиток прошлого

Artur
18.07.2017
09:21:16
бесполезное днище
очень полезное в одном кейзе. Мне часто надо экспортировать пропы компонента вместе с самим компонентом. И я делаю так: export namespace Component1 { export type Props = { prop1: string } } export class Component1 extends React.Component<Component1.Props, void> {} import {Component1} from "./component" let props: Component1.Props = {}

Google
Artur
18.07.2017
09:22:11
Сергей
18.07.2017
09:22:13
я пишу export interface Component1Props {}

Artur
18.07.2017
09:22:30
я пишу export interface Component1Props {}
И пишешь по 2 импорта везде где надо, а у меня один

а если ещё и реэкспорт где то есть, то ещё всё проще

Сергей
18.07.2017
09:22:47
палка о двух концах

Дмитрий
18.07.2017
09:22:57
Artur
18.07.2017
09:23:45
Один и плюс легаси-фича
Как кроме этой фичи описать достаточно частую ситуацию в js, когда у тебя есть функция со свойствами? Ну типа такого: import fn from "module" fn() fn.prop

Admin
ERROR: S client not available

Nikolay
18.07.2017
09:25:09
В итоге то как лучше делать? Классы отдельно в файлах писать, затем в index.ts что-то типа такого делать: import { A } from "./A.ts"; import { B } from "./B.ts"; export module MyModule { export class A; export class B; }

Artur
18.07.2017
09:25:10
Один и плюс легаси-фича
Ну и альтернативы засунуть тип внутрь класса нет, если бы было можно написать так: class SomeClass { type Props = {} } let props = SomeClass.Props то вопросов бы не было

Nikolay
18.07.2017
09:26:11
В index.ts уж тогда так: export {A} from "./A" export {B} from "./B"
А импортировать тогда так? import * as MyModule from "./MyModule/index"

Дмитрий
18.07.2017
09:26:39
Ты серьёзно для этой фичи неймспейсы тащишь?)

Для этого даже ts не нужен, лол

Сергей
18.07.2017
09:27:11
Google
Nikolay
18.07.2017
09:27:56
import {A} from "./MyModule"
Окей, а пачкой импортировать нельзя? Допустим, у меня 10 классов, и писать все - не камильфо

Artur
18.07.2017
09:27:57
конечно нельзя Ты ж ТИП запихиваешь в класс а потом его присваиваешь ПЕРЕМЕННОЙ
Ой, простите великодушно, конечно я имел ввиду так: let a: Class1.Props

Дмитрий
18.07.2017
09:28:14
Не норм аще

Dreamerinnoise
18.07.2017
09:28:26
норм

andretshurotshka?❄️кде
18.07.2017
09:28:28
а как еще делать?

Дмитрий
18.07.2017
09:28:35
Чем ему обычная декларация интерфейса не понравилась?

Сергей
18.07.2017
09:28:49
а зачем юзать type, вместо interface?

Дмитрий
18.07.2017
09:28:59
type, не важно

Сергей
18.07.2017
09:29:14
type вроде в extends не может

Дмитрий
18.07.2017
09:29:21
Они оба позволяют объявлять функции со свойствами, сто лет как

Nikolay
18.07.2017
09:29:29
бля import { A, B, C, } from './group'
Ну ок, но что-то мне кажется это не очень удобно

Сергей
18.07.2017
09:29:44
Ну ок, но что-то мне кажется это не очень удобно
лол. ну не пользуйся че. Пиши на каждый импорт по строке. Я пользуюсь мне норм



Дмитрий
18.07.2017
09:30:59
Господь дал вам типы, способные перегружать функции со свойствами, а они неймспейсы тащат T_T

andretshurotshka?❄️кде
18.07.2017
09:31:12
http://www.typescriptlang.org/play/#src=declare%20function%20x()%3A%20string%0D%0Adeclare%20namespace%20x%20%7B%0D%0A%20%20export%20const%20prop%3A%20string%3B%0D%0A%7D%0D%0A%0D%0Ax.prop%0D%0Alet%20y%20%3D%20x()%0D%0A

Страница 287 из 669