Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Интересно сравнить TypeScript с Kotlin на небольших реальных примерах  [new]
private
Member

Откуда:
Сообщений: 1903
Интересно сравнить TypeScript с Kotlin на небольших реальных примерах. Хотелось бы собрать пару тройку таких сравнений, на тайпскрипте и котлине.
Кто знает Котлин, напишите плиз.

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

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)
4 апр 19, 18:02    [21853084]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Интересно сравнить TypeScript с Kotlin на небольших реальных примерах  [new]
private
Member

Откуда:
Сообщений: 1903
На Котлине тоже неплохо.

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

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) }  
}
14 авг 20, 09:48    [22182348]     Ответить | Цитировать Сообщить модератору
 Re: Интересно сравнить TypeScript с Kotlin на небольших реальных примерах  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5688
private,

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

?
14 авг 20, 15:32    [22182659]     Ответить | Цитировать Сообщить модератору
 Re: Интересно сравнить TypeScript с Kotlin на небольших реальных примерах  [new]
private
Member

Откуда:
Сообщений: 1903
Работает спасибо, хмм, я пробовал так но у меня что-то не заработало, может ИДЕА почему-то не успела подсветить или опечатку где-то поставил.
14 авг 20, 15:54    [22182670]     Ответить | Цитировать Сообщить модератору
 Re: Интересно сравнить TypeScript с Kotlin на небольших реальных примерах  [new]
private
Member

Откуда:
Сообщений: 1903
Последние пару недель сделал небольшой проект на 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 также используются и в Котлин.
14 авг 20, 16:10    [22182675]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить