Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Интересно сравнить TypeScript с Kotlin на небольших реальных примерах / 5 сообщений из 5, страница 1 из 1
04.04.2019, 18:02
    #39796739
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересно сравнить TypeScript с Kotlin на небольших реальных примерах
Интересно сравнить TypeScript с Kotlin на небольших реальных примерах. Хотелось бы собрать пару тройку таких сравнений, на тайпскрипте и котлине.
Кто знает Котлин, напишите плиз.

Например - обработчик событий, (реальный пример - это может быть в интерфейсе что-то типа реакт-редукса, или в базе данных евент сорсинг, обработка сообщений и т.п.) каждое событие - это обьект. Обработчик - принимает на вход событие, делает что-то полезное.
Форма реализации свободная, в ТайпСкрипте это свитч, но может в Котлине есть что-то другое тож норм. Главное чтобы сохранялась типобезопасность и проверялись типы событий, что мы не забыли никакое событие обработать и т.п.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
interface CreatePost {
  type: 'create post'
  text: string
}

interface DeletePost {
  type: 'delete post'
  id:   string
}

// Юнион тип
type Command = CreatePost | DeletePost

const execute = (command: Command): boolean => {
  // Свитч, который заставит обработать все команды, и покажет ошибку 
  // если мы пропустим какую-то команду, или попробуем поставить неправильный тип команды.
  switch (command.type) {

    // Проверка значения, если будет опечатка покажет ошибку
    case 'create post':

      // Автокастинг, язык знает что в данной ветке свитча это не 
      // базовый тип команды, а CreatePost
      console.log(command.text) // Autocasting
      return true

    case 'delete post':
      console.log(command.id)
      return true
  }
}

const commands: Command[] = [
  { type: 'create post', text: 'Zerg on Tarsonis!' },
  { type: 'delete post', id: '1' }
]

commands.forEach(execute)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
14.08.2020, 09:48
    #39989672
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересно сравнить TypeScript с Kotlin на небольших реальных примерах
На Котлине тоже неплохо.

Вопрос, почему не получается `commands.map(execute)` вместо `commands.map { execute(it) }`?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
sealed class Command

class CreatePost(
  val text: String
) : Command()

class DeletePost(
  val id: Int
) : Command()


fun execute(command: Command): Boolean = when (command) {
  is CreatePost -> {
    println(command.text)
    true
  }

  is DeletePost -> {
    println(command.id)
    true
  }
}

val commands = listOf(
  CreatePost(text = "Zerg on Tarsonis!"),
  DeletePost(id = 1)
)

fun main() {
  commands.map { execute(it) }  
}
...
Рейтинг: 0 / 0
14.08.2020, 15:32
    #39989881
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересно сравнить TypeScript с Kotlin на небольших реальных примерах
private,

А если так попробовать:
Код: java
1.
commands.map(::execute)


?
...
Рейтинг: 0 / 0
14.08.2020, 15:54
    #39989886
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересно сравнить TypeScript с Kotlin на небольших реальных примерах
Работает спасибо, хмм, я пробовал так но у меня что-то не заработало, может ИДЕА почему-то не успела подсветить или опечатку где-то поставил.
...
Рейтинг: 0 / 0
14.08.2020, 16:10
    #39989890
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересно сравнить TypeScript с Kotlin на небольших реальных примерах
Последние пару недель сделал небольшой проект на Kotlin, до этого работал с TypeScript, могу сравнить теперь.

Kotlin лучше.

Я напишу его незначительные недостатки по сравнению с TypeScript потому что достоинств слишком много чтобы все писать

1 Жаль что нет literal types - они лучше, проще и универсальней чем sealed class

2 Нотаций для создания коллекций, это ограничиваеть созание структур данных

3 Универсальных типо-безопасных деструкторов и конструкторов структур даннх

let { a, b } = obj, let [a, b] = list, let l = [...а, ...b], let o = { ...a, ...b }


Еще проблема Котлина - много проектов на Котлине сделаны в классической жава-лапше где километры ненужного перегруженного и запутанного кода.

Ну и Gradle / Maven - жуткие убожества из мира Java также используются и в Котлин.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Интересно сравнить TypeScript с Kotlin на небольших реальных примерах / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]