The [docs for v1][1] mention a method `craft()->commerce_purchasables->saveElement()`.

This is omitted in the [docs for v2][2]. Does anyone know how I can create a product programmatically in PHP?


  [1]: https://craftcommerce.com/docs/purchasables
  [2]: https://github.com/craftcms/commerce-docs


        $product = new Product();
            $product->title = "Test Product 1";
            $product->typeId = 2;
            $product->enabled = true;
            $product->promotable = true;
        
        $variant = new Variant();
                $variant->isDefault = true;
        
        $product->setVariants([$variant]);

        Craft::$app->getElements()->saveElement($product);

With the above code I get the following error:

    Call to a member function getProductTypes() on null

I know the typeId is correct, because I can output it on a product template with `{{ product.typeId }}`